c#使用listbox的详细方法和常见问题解决

 更新时间:2022年01月10日 09:35:09   作者:痴者工良  
这篇文章介绍了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 表示允许选择多项,可以任意选中多个条目,点一下可以选中一条项目,重复点一下即取消。如下图

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C#调用执行外部程序的实现方法

    C#调用执行外部程序的实现方法

    这篇文章主要介绍了C#调用执行外部程序的实现方法,涉及C#进程调用的相关使用技巧,非常简单实用,需要的朋友可以参考下
    2015-04-04
  • C#文件目录操作方法汇总

    C#文件目录操作方法汇总

    本文主要列举出C#文件和目录操作的一些方法,包括创建、移动、遍历目录,读写文件等方法,有需要的小伙伴可以学习一下。
    2016-04-04
  • 在C#中处理时间戳和时区的解决方法

    在C#中处理时间戳和时区的解决方法

    处理时间戳和不同的时区可能是软件开发中的一个棘手问题,尤其是当系统不确定给定的日期时间是UTC还是本地时间时,通常会遇到与时间转换相关的问题,在这篇文章中,我将分享我们如何在C#中处理时间戳和时区,需要的朋友可以参考下
    2024-06-06
  • C#二分查找算法

    C#二分查找算法

    这篇文章介绍了C#中的二分查找算法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • WMI获取硬件信息封装函数方法(联想台式机出厂编号 CPUID BIOS序列号 硬盘信息 显卡信息 MAC地址)

    WMI获取硬件信息封装函数方法(联想台式机出厂编号 CPUID BIOS序列号 硬盘信息 显卡信息 MAC地址)

    这篇文章主要介绍了WMI获取硬件信息的方法,硬件信息有:联想台式机出厂编号 CPUID BIOS序列号 硬盘信息 显卡信息 MAC地址
    2013-11-11
  • 在C#中如何使用Dapper详解(译)

    在C#中如何使用Dapper详解(译)

    这篇文章主要给大家介绍了关于在C#中如何使用Dapper的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧
    2018-09-09
  • C# 判断时间段是否相交的实现方法

    C# 判断时间段是否相交的实现方法

    这篇文章主要介绍了C# 判断时间段是否相交的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能,需要的朋友可以参考下
    2017-10-10
  • c#使用filesystemwatcher监视文件系统的变化

    c#使用filesystemwatcher监视文件系统的变化

    对于一个文件夹的改变,C#这边有自己的类来实现,我们不需要关心它的内部实现机制,不需要关心它底层调用哪些API,我们只需要关心如何去调用它,如何让它帮助我们记录文件夹的修改情况即可,下面我们就实现它
    2014-01-01
  • C#算法之回文数

    C#算法之回文数

    这篇文章介绍了C#算法之回文数,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • 浅析WPF中常用属性的相关概念和应用

    浅析WPF中常用属性的相关概念和应用

    在WPF开发中,经常听到各种属性,如:依赖属性,附加属性,CLR属性,那这些不同类型的属性,具体又有什么作用呢,下面就跟随小编一起来学习一下吧
    2024-03-03

最新评论