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-;i>= ;i--)
{ //要从后面往前删除
listBox1.Items.Remove(listBox1.SelectedItems[i]);
//SelectedItems直接获取选中项的文本
}
//如果你是新手,看不懂上面的代码,别急,跳过这里,先看下面内容内容,后面会详细介绍
for (int i = listBox1.SelectedItems.Count-; i >=; i--)
{ //亦是从后删除 listBox1.Items.Remove(listBox1.Items[listBox1.SelectedIndices[i]]);
//先获取索引,再获取文本内容
}
获取集合的数量
int i = ;
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 表示允许选择多项,可以任意选中多个条目,点一下可以选中一条项目,重复点一下即取消。如下图

c#listbox使用详解和常见问题解决的更多相关文章
- centos6安装GitLab全程详解和常见问题解决
GitLab,是一个使用 Ruby on Rails 开发的开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用. 官方只提供了Debian/Ubuntu系统下的安 ...
- SpringMVC接受JSON参数详解及常见错误总结我改
SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...
- SpringMVC接受JSON参数详解及常见错误总结
SpringMVC接受JSON参数详解及常见错误总结 SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一 ...
- CSS中position详解与常见应用实现
在web前台开发时候,我们必不可少的会用到postion属性进行布局定位.今天总结了一下position知识点,与常用功能与大家分享,欢迎大家交流指正. 首先我们对postion属性进行详解. 在CS ...
- android WebView详解,常见漏洞详解和安全源码
这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 转载请注明出处:http://blog.csdn.net/se ...
- MySQL5.7安装详解及常见安装问题解决
数据库安装 Python开发使用mysql数据库5.5版本以上(django2.0之后放弃mysql5.5之前的支持),在mysql版本当中5.7之前的版本都有.exe或者.msi的可执行安装文件,但 ...
- Android -- Annotation(注解)原理详解及常见框架应用
1,我们在上一篇讲到了EventBus源码及3.0版本的简单使用,知道了我们3.0版本是使用注解方式标记事件响应方法的,这里我们就有一个疑问了,为什么在一个方法加上类似于"@Subscrib ...
- logging模块详解以及常见代码
1.在django中获取客户端IP地址: if 'HTTP_X_FORWARDED_FOR' in request.META: ip = request.META['HTTP_X_FORWARDED_ ...
- MySQL的主从复制步骤详解及常见错误解决方法
mysql主从复制(replication同步)现在企业用的比较多,也很成熟.它有以下优点: 1.降低主服务器压力,可在从库上执行查询工作. 2.在从库上进行备份,避免影响主服务器服务. 3.当主库出 ...
随机推荐
- AutoMapper控件
1.下载AutoMapper控件. 2.定义类,实现Profile. 3.在定义类的构造方法中使用如下代码进行转换 // 1.匹配,o,t代表TDestination;s代表TSource,返回TDe ...
- ibatis实现批处理
最近做一个小项目,用到Spring+iBatis.突然遇到一个很久远,却很实在的问题:在Spring下怎么使用iBatis的批处理实现? 大概是太久没有写Dao了,这部分真的忘得太干净了. 从4个层面 ...
- 学习Rails之activeAdmin
一.开始ActiveAdmin Active Admin是一个发布在RAILS3中使用的Gem. 1.我们为了快速开始我们对Active Admin的了解,我们首先安装它: 在你GemFile ...
- Redis 【Hash】 一句话说明
HDEL-----------------------------------------------------------哈希表 key 中的一个或多个指定域 HEXISTS----------- ...
- SQLServer 触发器入门
阅读目录 一:触发器的优点 二:触发器的作用 三:触发器的分类 四:触发器的工作原理 五:创建触发器 六:管理触发器 概念: 触发器(trigger)是SQL server 提供给程序员和数据分析 ...
- vmware创建centos虚拟机
下载centos 安装之前你需要下载centos镜像:http://mirrors.aliyun.com/ 创建虚拟机 如果还没有安装vmware请参考:https://www.cnblogs.com ...
- Java 学习笔记(2)——基本语句、控制结构
上一篇中简单谈了一下自己对Java的一些看法并起了一个头,现在继续总结java的相关语法.java语法总体上与C/C++一样,所以对于一个C/C++程序员来说,天生就能看懂Java代码.在学习java ...
- PoPo数据可视化周刊第5期
PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) World Wire 数据可视化演示(视频) IBM公司 ...
- 基于jQuery的数字键盘插件
有时,我们需要在网页上使用软键盘.今天,就给大家带来一个基于jQuery的数字键盘插件,除了jQuery,不需要依赖任何文件资源.纯数字键盘,有退格,有清除,不支持输入小数(需要的可以自己改一下,主要 ...
- 原生javascript实现类似jquery on方法的行为监听
原生javascript有addEventListener和attachEvent方法来注册事件,但有时候我们需要判断某一行为甚至某一函数是否被执行了,并且能够获取前一行为的参数,这个时候就需要其他方 ...
