c#使用listbox的詳細(xì)方法和常見(jiàn)問(wèn)題解決
關(guān)于ListBox
ListBox是WinForm中的列表控件,它提供了一個(gè)項(xiàng)目列表(一組數(shù)據(jù)項(xiàng)),用戶可以選擇一個(gè)或者多個(gè)條目,當(dāng)列表項(xiàng)目過(guò)多時(shí),ListBox會(huì)自動(dòng)添加滾動(dòng)條,使用戶可以滾動(dòng)查閱所有選項(xiàng)。ListBox可以預(yù)先設(shè)定列表內(nèi)容,也可以綁定其他控件或數(shù)據(jù)庫(kù),自動(dòng)更新條目,把數(shù)據(jù)逐一顯示出來(lái)。
ListBox常用屬性
- *列表索引值,是指列表中的條目的序號(hào),從0開(kāi)始,如0,1,2,3... ...,當(dāng)對(duì)列表進(jìn)行增刪插入等操作時(shí),條目的排序發(fā)生變化,索引亦會(huì)變化。
- *選擇項(xiàng)索引,是指選中的項(xiàng)目亦從0開(kāi)始的序號(hào),當(dāng)對(duì)選中項(xiàng)進(jìn)行增刪等操作時(shí),數(shù)目發(fā)生變化,索引亦會(huì)變化。就好像我叫癡者工良,按照姓名拼音排序,在班級(jí)的學(xué)號(hào)是66,而在班里10個(gè)姓癡的同學(xué)中,我是3號(hào)。
兩者區(qū)別如下(有顏色背景為選中項(xiàng)):
常用屬性 | 說(shuō)明 |
---|---|
Items | 指列表中所有的條目集合,是一個(gè)數(shù)組集合??梢酝ㄟ^(guò)該屬性,對(duì)列表進(jìn)行增添、移除或獲取列表內(nèi)容 |
MultiColumn | 用來(lái)設(shè)置或獲取一個(gè)值(bool值),表示是否允許多列顯示,true表示多列,false表示單列,默認(rèn)為false。 |
CoumnWidth | 用來(lái)獲取列表當(dāng)前列的寬度或設(shè)置列表當(dāng)前列的寬度 |
SelectionMode | 設(shè)置列表?xiàng)l目的選擇方法。 SelectionMode.None 表示不允許選中 SelectionMode.One 表示只允許用戶選擇一項(xiàng) SelectionMode.MultiExtended 表示允許選擇多項(xiàng),但選中的條目必定相連(相鄰) SelectionMode.MultiSimple 表示允許選擇多項(xiàng),可以任意選中多個(gè)條目。如下圖 |
SelectedIndex | *獲取選中項(xiàng)的索引 未選中任何項(xiàng)時(shí),返回值為 1 單選時(shí),屬性值即為選中項(xiàng)的索引 多選時(shí),表示第一項(xiàng)選定項(xiàng)的索引,亦可使用SelectedIndex[i]獲取其它選中項(xiàng)索引,亦可讓某項(xiàng)變成選中狀態(tài)。i 為選中項(xiàng)從0開(kāi)始的序號(hào)。 |
SelectedIndeces | 用來(lái)獲取選中項(xiàng)從0開(kāi)始的索引的集合,一般只用于多項(xiàng)。與SelectedIndex相似,但SelectedIndeces只有獲取索引的能力。 |
SelectedItem | 獲取列表當(dāng)前選中項(xiàng)。注意,獲取到的是列表選中項(xiàng)的文本內(nèi)容,而SelectedIndex和SelectedIndeces獲取的只是選中項(xiàng)索引(int)。 |
SelectedItems | 獲取選中項(xiàng)的集合,使用SelectedItems[i]來(lái)獲取選中項(xiàng)的文本內(nèi)容,i為選中項(xiàng)集合索引。 SelectedItems和SelectedIndex相似,但一個(gè)是獲取文本字段,一個(gè)是獲取索引。 |
Sorted | 用來(lái)設(shè)置或獲取列表是否按字母排序(bool)。 |
Text | 獲取或搜索列表控件當(dāng)前選定項(xiàng)的文本。 |
ItemsCount | 用來(lái)獲取當(dāng)前列表?xiàng)l目的 數(shù)目。 |
ListBox增加、插入或刪除內(nèi)容
這是通過(guò)使用Items屬性進(jìn)行操作的,在visual studio中新建窗口,拖入一個(gè)列表控件,控件name為lixtBox1
listBox1.Items.Add("要增加的條目文本"); //將在列表后面添加 listBox1.Items.Insert(i, "要增加的條目文本"); //將在索引為i的條目后面插入一條新條目 listBox1.Items.Remove("在此放入你要移除條目的文本內(nèi)容"); //刪除是用的是文本內(nèi)容,而不是索引 listBox1.Items.Clear(); //清空列表所有條目 listBox1.ClearSelected(); //取消所有選中項(xiàng),即變?yōu)槲催x中狀態(tài)
ListBox刪除多項(xiàng)內(nèi)容
很多朋友在這里摔跤,vs老是提示數(shù)組超出界限。因?yàn)長(zhǎng)istBox的刪除要通過(guò)指定某項(xiàng)的文本,并且只能一項(xiàng)項(xiàng)的刪除,而刪除一項(xiàng)后索引又會(huì)發(fā)生變化,所以新手可能會(huì)很惘然。下面提供兩種刪除方式的代碼供新手參考。
for (int i=listBox1.SelectedItems.Count-1;i>=0 ;i--) { //要從后面往前刪除 listBox1.Items.Remove(listBox1.SelectedItems[i]); //SelectedItems直接獲取選中項(xiàng)的文本 } //如果你是新手,看不懂上面的代碼,別急,跳過(guò)這里,先看下面內(nèi)容內(nèi)容,后面會(huì)詳細(xì)介紹
for (int i = listBox1.SelectedItems.Count-1; i >=0; i--) { //亦是從后刪除 listBox1.Items.Remove(listBox1.Items[listBox1.SelectedIndices[i]]); //先獲取索引,再獲取文本內(nèi)容 }
獲取集合的數(shù)量
int i = 0; i=listBox1.Items.Count; //獲取列表所有條目的數(shù)量 i = listBox1.SelectedIndices.Count; //獲取選中的條目的數(shù)量 i = listBox1.SelectedItems.Count; //獲取選中的條目的數(shù)量 //listBox1.SelectedIndex不能獲取數(shù)量!請(qǐng)翻閱屬性表,有關(guān)鍵詞“集合”。能夠獲取集合的屬性,才能獲取數(shù)量
獲取所有選中條目的內(nèi)容
再新建一個(gè)TextBox控件,name為textBox1,代碼如下
textBox1.Clear(); textBox1.Text = "選中項(xiàng)的內(nèi)容為\r\n"; for(int i=0;i<listBox1.SelectedItems.Count ;i++ ) { textBox1.Text += +listBox1.SelectedItems[i].ToString()+"\r\n"; //逐條讀取選中項(xiàng)的內(nèi)容 }
ListBox單選或多選
點(diǎn)擊ListBox控件,在屬性一欄找到SelectionMode
屬性,亦可以代碼形式設(shè)定,屬性說(shuō)明如下
- SelectionMode.None 表示不允許選中
- SelectionMode.One 表示只允許用戶選擇一項(xiàng)
- SelectionMode.MultiExtended 表示允許選擇多項(xiàng),但選中的條目必定相連(相鄰),鼠標(biāo)當(dāng)選中一項(xiàng)后,按鍵盤(pán)↑↓可以選定一個(gè)范圍的選項(xiàng),但選項(xiàng)不能間隔選中。如下圖:
- SelectionMode.MultiSimple 表示允許選擇多項(xiàng),可以任意選中多個(gè)條目,點(diǎn)一下可以選中一條項(xiàng)目,重復(fù)點(diǎn)一下即取消。如下圖
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C#中CheckedListBox控件的用法實(shí)例
- C# Winfom 中ListBox的簡(jiǎn)單用法詳解
- C# ListBox中的Item拖拽代碼分享
- C#使用checkedListBox1控件鏈接數(shù)據(jù)庫(kù)的方法示例
- C# CheckedListBox控件的用法總結(jié)
- C#實(shí)現(xiàn)讓ListBox適應(yīng)最大Item寬度的方法
- C#讀取文本文件到listbox組件的方法
- C#保存listbox中數(shù)據(jù)到文本文件的方法
- C#(WinForm) ComboBox和ListBox添加項(xiàng)及設(shè)置默認(rèn)選擇項(xiàng)
- C#入門教程之ListBox控件使用方法
相關(guān)文章
C#使用DataSet Datatable更新數(shù)據(jù)庫(kù)的三種實(shí)現(xiàn)方法
這篇文章主要介紹了C#使用DataSet Datatable更新數(shù)據(jù)庫(kù)的三種實(shí)現(xiàn)方法,需要的朋友可以參考下2014-08-08newtonsoft.json解析天氣數(shù)據(jù)出錯(cuò)解決方法
這篇文章主要介紹了NewtonSoft.JSon解析天氣數(shù)據(jù)時(shí)出錯(cuò)的解決方法,需要的朋友可以參考下2014-02-02C#中comboBox實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)
給大家分享了C#中comboBox實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)的全部代碼,代碼經(jīng)過(guò)測(cè)試,有興趣的朋友跟著做一下。2018-03-03C#實(shí)現(xiàn)常見(jiàn)時(shí)間格式
這篇文章介紹了C#實(shí)現(xiàn)常見(jiàn)時(shí)間格式的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04C#實(shí)現(xiàn)字母與ASCII碼互相轉(zhuǎn)換
ASCII是基于拉丁字母的編碼系統(tǒng),也是現(xiàn)今最通用的單字節(jié)編碼系統(tǒng),本文主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)字母與ASCII碼互轉(zhuǎn),需要的可以參考下2024-01-01