C#入门教程之ListBox控件使用方法

时间:2023-09-20 04:52:59 

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


这样的话就对了。
个人自学不知说的对不对,希望各位支持支持,欢迎指正。

标签:C#,ListBox控件
0
投稿

猜你喜欢

  • JAVA发送HTTP请求的多种方式详细总结

    2021-06-15 14:43:48
  • Java中Boolean与字符串或者数字1和0的转换实例

    2022-06-27 16:17:19
  • c#使用反射调用类型成员示例

    2023-02-27 08:54:43
  • Android studio 3.5.2安装图文教程详解

    2022-06-27 19:15:46
  • 详解shrio的认证(登录)过程

    2022-12-26 02:27:47
  • 10个Elasticsearch查询的实用技巧分享

    2022-09-21 07:32:14
  • spring的jdbctemplate的crud的基类dao

    2022-05-30 13:05:17
  • Gradle的基本使用

    2023-05-29 00:08:42
  • Android 二维码 生成和识别二维码 附源码下载

    2023-05-01 12:45:01
  • java使用EasyExcel导入导出excel

    2022-10-31 03:48:30
  • 解决java执行cmd命令调用ffmpeg报错Concat error - No such filter '[0,0]'问题

    2023-03-14 20:35:11
  • Netty实战入门教程之 什么是Netty

    2023-10-14 01:08:09
  • 在Android中调用WebService实例

    2023-10-27 12:00:10
  • Android Volley框架使用源码分享

    2023-09-10 09:43:44
  • 最简单的MyBatis Plus的多表联接、分页查询实现方法

    2022-07-10 05:21:49
  • C# 中的??操作符浅谈

    2023-03-05 03:54:43
  • AQS(AbstractQueuedSynchronizer)抽象队列同步器及工作原理解析

    2023-02-24 22:20:09
  • Springmvc拦截器执行顺序及各方法作用详解

    2023-06-10 08:11:46
  • C语言实现简单弹跳小球

    2022-07-03 12:54:34
  • 常用Hash算法(C语言的简单实现)

    2021-09-10 05:23:47
  • asp之家 软件编程 m.aspxhome.com