1)控件属性
items
selecteditems
selectiomodes
2)数据绑定
datasoure
displaymember
valuemenber
3)实例
下面开始一一说明上面的listbox控件的使用。
首先来说控件的属性,
(1)items:使用此属性获取列表控件项的属性。此属性可用于确定列表控件中的选定项。添加items时既可以设计时静态添加,也可以在代码中动态添加。如果不想显示设计时添加的items,可以在代码中添加this.listbox1.items.clear();只显示在代码中添加的选项。
(2)selecteditems:获取包含listbox中当前选定项的集合。
(3)selectiomodes:获取或设置在listbox中选择项所用的方法。一共有四个值可选;默认为 selectionmode.one,只能选中一个;属性值为none时不能选择;当属性multiextended 时,按下 shift 键的同时单击鼠标或者同时shift 键和箭头键之一(向上键、向下键、向左键和向右键),会将选定内容从前一选定项扩展到当前项。按 ctrl 键的同时单击鼠标将选择或撤消选择列表中的某项;当该属性设置为multisimple 时,鼠标单击或按空格键将选择或撤消选择列表中的某项。
接下来说一哈数据绑定,通常数据都是可变的,所以说就需要数据绑定。数据绑定有几种,一种就是绑定从数据库中获取的datatable或者是dataset;另外一种就是自定义一个类,绑定自定义类中的数据。c#中的数据绑定与asp.net中的数据绑定还有一点区别,asp.net中绑定数据后还要调用一个databind方法,而在c#中就不需要。而displaymember获取或设置要显示的属性。
最后我们来做一个实例如图所示:
下面我们只是说一哈几个重要的方法的实现,具体代码就不在这写了。将左边框中的选项放到右边框中去。代码:
复制代码 代码如下:
for (int i = this.listbox1.selecteditems.count - 1; i >= 0;i -- )
{
menu menu = (menu)this.listbox1.selecteditems[i];
this.listbox2.items.add(menu);
this.listbox1.items.remove(i);
}
上面虽然实现了功能但是有一个问题,就是左边的项到了右边后变成了倒序。这是我们需要将添加和移出分开写,代码:
复制代码 代码如下:
for (int i = 0; i < this.listbox1.selecteditems.count;i++ )
{
menu menu = (menu)this.listbox1.selecteditems[i];
this.listbox2.items.add(menu);
}
for (int i = this.listbox1.selecteditems.count - 1; i >= 0; i--)
{
this.listbox1.items.remove(i);
}
到现在为止还一个问题就是当选择框中的前面几个项的时候右移没有问题,但选择后面几个项时移到右边框中的是后面几个项,而左边框中移出的是前面几个项,造成这个问题的原因是我们将
selecteditems和items混为一谈了。这是很多初学者容易犯的错误。代码:
复制代码 代码如下:
for (int i = 0; i < this.listbox1.selecteditems.count;i++ )
{
menu menu = (menu)this.listbox1.selecteditems[i];
this.listbox2.items.add(menu);
}
for (int i = this.listbox1.selecteditems.count - 1; i >= 0; i--)
{
menu menu = (menu)this.listbox1.selecteditems[i];
this.listbox1.items.remove(menu);
}
这样的话就对了。
个人自学不知说的对不对,希望各位支持支持,欢迎指正。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!