c#控件攻略宝典之ListBox控件

时间:2022-09-25 22:11:55

ListBox控件的使用:

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获取或设置要显示的属性。

最后我们来做一个实例如图所示:c#控件攻略宝典之ListBox控件下面我们只是说一哈几个重要的方法的实现,具体代码就不在这写了。将左边框中的选项放到右边框中去。代码:

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);
 }

这样的话就对了。

随机推荐

  1. Office 365 - Windows PowerShell for SharePoint Online

    Office 365 PowerShell for SharePoint Online 1. Get-SPOTenantLogEntry 并不能获取所有的Log信息,只能用于获取因外部资源而出错的lo ...

  2. jsp的三种自定义标签 写法示例

    1.自定义方法标签 引入方式示例: <%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %> 写 ...

  3. 如何设置启动页 LaunchImage

  4. 零基础如何入门Python

    编程零基础如何学习Python 如果你是零基础,注意是零基础,想入门编程的话,我推荐你学Python.虽然国内基本上是以C语言作为入门教学,但在麻省理工等国外大学都是以Python作为编程入门教学的. ...

  5. 后缀数组da3模板

    在做poj2406的时候...按论文给的rmq模板会超内存...然后网上找了http://blog.csdn.net/libin56842/article/details/46310425这位大爷的d ...

  6. Java执行批处理&period;bat文件(有问题???求高手帮忙解答!!!)

                           Java执行批处理.bat文件(有问题???求高手帮忙解答!!!) 在项目开发中常常都会遇到需要在代码中调用批处理bat脚本,把自己在项目中遇到过的总结下 ...

  7. chrome主页被篡改为360导航之解决方式

    昨天,安装某款游戏之后,发现chrome的主页被篡改为360导航. 进入chrome设置改动主页,又一次启动chrome还是360导航,后来发如今chrome快捷方式的属性中目标后面加了一串360导航 ...

  8. linux系统编程之错误处理:perror&comma;strerror和errno

    1,在系统编程中错误通常通过函数返回值来表示,并通过特殊变量errno来描述. errno这个全局变量在<errno.h>头文件中声明如下:extern int errno; errno是 ...

  9. 30 最小的k个数

    输入n个整数,找出其最小的k个数,例如输入4,5,1,6,2,7,3,8,最小的4个数为1,2,3,4 解法一:快排思想,会改变原数组    O(n) 注意是vector<int>&amp ...

  10. 自定义崩溃界面 CustomActivityOnCrash

    项目地址:https://github.com/Ereza/CustomActivityOnCrash The inner workings are based on ACRA's dialog re ...