c#使用listbox的详细方法和常见问题解决
关于listbox
listbox是winform中的列表控件,它提供了一个项目列表(一组数据项),用户可以选择一个或者多个条目,当列表项目过多时,listbox会自动添加滚动条,使用户可以滚动查阅所有选项。listbox可以预先设定列表内容,也可以绑定其他控件或数据库,自动更新条目,把数据逐一显示出来。
listbox常用属性
- *列表索引值,是指列表中的条目的序号,从0开始,如0,1,2,3... ...,当对列表进行增删插入等操作时,条目的排序发生变化,索引亦会变化。
- *选择项索引,是指选中的项目亦从0开始的序号,当对选中项进行增删等操作时,数目发生变化,索引亦会变化。就好像我叫痴者工良,按照姓名拼音排序,在班级的学号是66,而在班里10个姓痴的同学中,我是3号。
两者区别如下(有颜色背景为选中项):
常用属性 | 说明 |
---|---|
items | 指列表中所有的条目集合,是一个数组集合。可以通过该属性,对列表进行增添、移除或获取列表内容 |
multicolumn | 用来设置或获取一个值(bool值),表示是否允许多列显示,true表示多列,false表示单列,默认为false。 |
coumnwidth | 用来获取列表当前列的宽度或设置列表当前列的宽度 |
selectionmode |
设置列表条目的选择方法。 selectionmode.none 表示不允许选中 selectionmode.one 表示只允许用户选择一项 selectionmode.multiextended 表示允许选择多项,但选中的条目必定相连(相邻) selectionmode.multisimple 表示允许选择多项,可以任意选中多个条目。如下图 |
selectedindex |
*获取选中项的索引 未选中任何项时,返回值为 1 单选时,属性值即为选中项的索引 多选时,表示第一项选定项的索引,亦可使用selectedindex[i]获取其它选中项索引,亦可让某项变成选中状态。i 为选中项从0开始的序号。 |
selectedindeces | 用来获取选中项从0开始的索引的集合,一般只用于多项。与selectedindex相似,但selectedindeces只有获取索引的能力。 |
selecteditem | 获取列表当前选中项。注意,获取到的是列表选中项的文本内容,而selectedindex和selectedindeces获取的只是选中项索引(int)。 |
selecteditems |
获取选中项的集合,使用selecteditems[i]来获取选中项的文本内容,i为选中项集合索引。 selecteditems和selectedindex相似,但一个是获取文本字段,一个是获取索引。 |
sorted | 用来设置或获取列表是否按字母排序(bool)。 |
text | 获取或搜索列表控件当前选定项的文本。 |
itemscount | 用来获取当前列表条目的 数目。 |
listbox增加、插入或删除内容
这是通过使用items属性进行操作的,在visual studio中新建窗口,拖入一个列表控件,控件name为lixtbox1
listbox1.items.add("要增加的条目文本"); //将在列表后面添加 listbox1.items.insert(i, "要增加的条目文本"); //将在索引为i的条目后面插入一条新条目 listbox1.items.remove("在此放入你要移除条目的文本内容"); //删除是用的是文本内容,而不是索引 listbox1.items.clear(); //清空列表所有条目 listbox1.clearselected(); //取消所有选中项,即变为未选中状态
listbox删除多项内容
很多朋友在这里摔跤,vs老是提示数组超出界限。因为listbox的删除要通过指定某项的文本,并且只能一项项的删除,而删除一项后索引又会发生变化,所以新手可能会很惘然。下面提供两种删除方式的代码供新手参考。
for (int i=listbox1.selecteditems.count-1;i>=0 ;i--) { //要从后面往前删除 listbox1.items.remove(listbox1.selecteditems[i]); //selecteditems直接获取选中项的文本 } //如果你是新手,看不懂上面的代码,别急,跳过这里,先看下面内容内容,后面会详细介绍
for (int i = listbox1.selecteditems.count-1; i >=0; i--) { //亦是从后删除 listbox1.items.remove(listbox1.items[listbox1.selectedindices[i]]); //先获取索引,再获取文本内容 }
获取集合的数量
int i = 0; i=listbox1.items.count; //获取列表所有条目的数量 i = listbox1.selectedindices.count; //获取选中的条目的数量 i = listbox1.selecteditems.count; //获取选中的条目的数量 //listbox1.selectedindex不能获取数量!请翻阅属性表,有关键词“集合”。能够获取集合的属性,才能获取数量
获取所有选中条目的内容
再新建一个textbox控件,name为textbox1,代码如下
textbox1.clear(); textbox1.text = "选中项的内容为\r\n"; for(int i=0;i<listbox1.selecteditems.count ;i++ ) { textbox1.text += +listbox1.selecteditems[i].tostring()+"\r\n"; //逐条读取选中项的内容 }
listbox单选或多选
点击listbox控件,在属性一栏找到selectionmode
属性,亦可以代码形式设定,属性说明如下
- selectionmode.none 表示不允许选中
- selectionmode.one 表示只允许用户选择一项
- selectionmode.multiextended 表示允许选择多项,但选中的条目必定相连(相邻),鼠标当选中一项后,按键盘↑↓可以选定一个范围的选项,但选项不能间隔选中。如下图:
- selectionmode.multisimple 表示允许选择多项,可以任意选中多个条目,点一下可以选中一条项目,重复点一下即取消。如下图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。