ListBox的简单应用

刚看完教程,之前很少用到ListBox这个控件,就是在WinForm编程中我也基本上没有用过,都是用DropDownList来代替了,其实这个控件功能比较强大,至少我是这么认为。如果再配合上AJAX的技术,做成联动一样的菜单,用处就更大了!
    在做到删除选定的项目,并且全部删除的时候,出现了个问题,每次都会剩几条,不知道是我算法有问题还是怎么,希望能有人帮我指点指点。谢谢了!我把代码和源文件帖出来。
   天轰穿的教程做的真的很不错,按照自己的理解又把注释更加详细化了,做为一个菜鸟,注释是很重要的东西,把自己的思路归纳总结,是个好事情!
using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

public  partial  class  _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
       
    }

    
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
    
{//将选中的项目放入Laber中,如果选择的项为Mgod,则跳转到我的博客园的地址。
        Label1.Text = ListBox1.SelectedValue.ToString();
        
if (ListBox1.SelectedValue == "Mgod")
        
{
            Response.Redirect(
"[url]http://mgod.cnblogs.com[/url]");
        }

    }

    
protected void TextBox1_TextChanged(object sender, EventArgs e)
    
{
        ListBox2.Items.Add(TextBox1.Text);
        Button1.Enabled 
= true;
        Button2.Enabled
=true;


    }

    
protected void Button1_Click(object sender, EventArgs e)
    
{//点清除,先判断里面是否有值,如果有就清除,如果没有就提示
        if (ListBox2.Items.Count > 0)
        
{
            ListBox2.Items.Remove(ListBox2.SelectedItem);
        }

        
else
        
{
            
//Button1.Enabled = false; //做了屏蔽,按常理说,如果已经没有任何值的话,按钮应该是不可见的或者是不可选的
            
//Button2.Enabled = false;
            Response.Write("<script>alert('哥们,你已经删干净了!');</script>");
        }

    }

    
protected void Button2_Click(object sender, EventArgs e)
    
{//点清空,先判断里面是否有值,如果有就清空,如果没有就提示
        if (ListBox2.Items.Count > 0)
        
{
            ListBox2.Items.Clear();
        }

        
else
        
{
            
//Button1.Enabled = false;  //做了屏蔽,按常理说,如果已经没有任何值的话,按钮应该是不可见的或者是不可选的
            
//Button2.Enabled = false;
            Response.Write("<script>alert('哥们,你已经清空了!');</script>");
        }

    }

    
protected void Button3_Click(object sender, EventArgs e)
    
{//循环所有的LISTBOX项,将选中的删除
        
        
for (int i=1; i <= ListBox3.Items.Count; i++)
        
{
            ListBox3.Items.Remove(ListBox3.SelectedItem);           
        }

        
//不知道为什么不能全部删除,是我的算法不对吗?请高人指点!

    }

    
protected void ListBox4_SelectedIndexChanged(object sender, EventArgs e)
    
{//联动菜单
        switch (ListBox4.SelectedValue)//判断选中的值
        
            
case "赤色火焰的BLOG":
                ListBox5.Items.Clear();
                ListBox5.Items.Add(
"ASP.NET 2.0");
                ListBox5.Items.Add(
"ASP.NET AJAX");
                ListBox5.Items.Add(
"C#.NET");
                ListBox5.Items.Add(
"业界信息");
                ListBox5.Items.Add(
"个人随笔");
                
break;
            
case "个人资料":
                ListBox5.Items.Clear();
                ListBox5.Items.Add(
"出生日期");
                ListBox5.Items.Add(
"性格爱好");
                ListBox5.Items.Add(
"喜欢的女生类型");
                
break;
        }



    }

    
protected void Button4_Click(object sender, EventArgs e)
    
{//向上下移动一条
        
//这种临时存储的方法,跟冒泡排序法有很多类似,只是少了很多循环。如果多一个移动到首位的功能的话,还需要加For循环,重新整理一下思路

        
if (((Button)sender).CommandName == "up" && ListBox6.SelectedIndex > 0 || ((Button)sender).CommandName == "down" && ListBox6.SelectedIndex < ListBox6.Items.Count - 1 && ListBox6.SelectedIndex >= 0)
        
//判断传来的命令是UP,并且所选条目必须大于0,如果是DOWN,则所选条目必须小于最大项
            int Index;//为了减少代码,这里做了一个变量判断
            if (((Button)sender).CommandName == "up")
            
{
                Index 
= -1;
            }

            
else
            
{
                Index 
= 1;
            }

            ListItem lt 
= new ListItem(ListBox6.SelectedItem.Text, ListBox6.SelectedValue);//把选中的条目放入lt中,用来做临时保存
            ListBox6.Items[ListBox6.SelectedIndex].Text = ListBox6.Items[ListBox6.SelectedIndex + Index].Text;//把所选条目的上一条或者下一条的TEXT赋值给选中的条目
            ListBox6.Items[ListBox6.SelectedIndex].Value = ListBox6.Items[ListBox6.SelectedIndex + Index].Value;//把所选条目的上一条或者下一条的Value赋值给选中的条目
            ListBox6.Items[ListBox6.SelectedIndex + Index].Text = lt.Text;//把临时存储的选中的项目的内容赋值给选中条目的上一条或者下一条
            ListBox6.Items[ListBox6.SelectedIndex + Index].Value = lt.Value;//把临时存储的选中的项目的内容赋值给选中条目的上一条或者下一条
            ListBox6.SelectedIndex = ListBox6.SelectedIndex + Index;//设置选中的位置

            ((Button)sender).Focus();
//设置焦点,否则每次都显示的是页头
        }


    }

    
protected void Button6_Click(object sender, EventArgs e)
    
{//
        if (ListBox6.SelectedIndex >= 0)
        
{
            ListBox6.SelectedIndex 
= 0;
            
        }

        
else
        
{
            Response.Write(
"<script>alert('请选择后再进行操作');</script>");
        }

        ((Button)sender).Focus();
    }

    
protected void Button7_Click(object sender, EventArgs e)
    
{//向上
        if (ListBox6.SelectedIndex >= 0)
        
{
            ListBox6.SelectedIndex 
= ListBox6.SelectedIndex - 1;
            
        }

        
else
        
{
            Response.Write(
"<script>alert('请选择后再进行操作');</script>");
        }

        ((Button)sender).Focus();
    }

    
protected void Button8_Click(object sender, EventArgs e)
    
{//向下
        if (ListBox6.SelectedIndex >= 0)
        
{
            ListBox6.SelectedIndex 
= ListBox6.SelectedIndex + 1;
            
        }

        
else
        
{
            Response.Write(
"<script>alert('请选择后再进行操作');</script>");
        }

        ((Button)sender).Focus();
    }

    
protected void Button9_Click(object sender, EventArgs e)
    
{//
        if (ListBox6.SelectedIndex >= 0)
        
{
            ListBox6.SelectedIndex 
= ListBox6.Items.Count - 1;
           
        }

        
else
        
{
            Response.Write(
"<script>alert('请选择后再进行操作');</script>");
        }

        ((Button)sender).Focus();
    }

}

点此下载代码

本文出自 “赤色火焰.Net_学习手札” 博客,转载请与作者联系!

你可能感兴趣的:(职场,listbox,休闲,简单应用)