ListBox控件的使用:
1)控件屬性
Items
SelectedItems
SelectioModes
2)數(shù)據(jù)綁定
DataSoure
DisplayMember
ValueMenber
3)實(shí)例
下面開始一一說(shuō)明上面的ListBox控件的使用。
首先來(lái)說(shuō)控件的屬性,
(1)Items:使用此屬性獲取列表控件項(xiàng)的屬性。此屬性可用于確定列表控件中的選定項(xiàng)。添加items時(shí)既可以設(shè)計(jì)時(shí)靜態(tài)添加,也可以在代碼中動(dòng)態(tài)添加。如果不想顯示設(shè)計(jì)時(shí)添加的items,可以在代碼中添加this.listBox1.Items.Clear();只顯示在代碼中添加的選項(xiàng)。
(2)SelectedItems:獲取包含ListBox中當(dāng)前選定項(xiàng)的集合。
(3)SelectioModes:獲取或設(shè)置在ListBox中選擇項(xiàng)所用的方法。一共有四個(gè)值可選;默認(rèn)為 SelectionMode.One,只能選中一個(gè);屬性值為none時(shí)不能選擇;當(dāng)屬性MultiExtended 時(shí),按下 Shift 鍵的同時(shí)單擊鼠標(biāo)或者同時(shí)Shift 鍵和箭頭鍵之一(向上鍵、向下鍵、向左鍵和向右鍵),會(huì)將選定內(nèi)容從前一選定項(xiàng)擴(kuò)展到當(dāng)前項(xiàng)。按 Ctrl 鍵的同時(shí)單擊鼠標(biāo)將選擇或撤消選擇列表中的某項(xiàng);當(dāng)該屬性設(shè)置為MultiSimple 時(shí),鼠標(biāo)單擊或按空格鍵將選擇或撤消選擇列表中的某項(xiàng)。
接下來(lái)說(shuō)一哈數(shù)據(jù)綁定,通常數(shù)據(jù)都是可變的,所以說(shuō)就需要數(shù)據(jù)綁定。數(shù)據(jù)綁定有幾種,一種就是綁定從數(shù)據(jù)庫(kù)中獲取的DataTable或者是DataSet;另外一種就是自定義一個(gè)類,綁定自定義類中的數(shù)據(jù)。c#中的數(shù)據(jù)綁定與ASP.NET中的數(shù)據(jù)綁定還有一點(diǎn)區(qū)別,ASP.NET中綁定數(shù)據(jù)后還要調(diào)用一個(gè)DataBind方法,而在c#中就不需要。而DisplayMember獲取或設(shè)置要顯示的屬性。
最后我們來(lái)做一個(gè)實(shí)例如圖所示:
下面我們只是說(shuō)一哈幾個(gè)重要的方法的實(shí)現(xiàn),具體代碼就不在這寫了。將左邊框中的選項(xiàng)放到右邊框中去。代碼:
復(fù)制代碼 代碼如下:
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);
}
上面雖然實(shí)現(xiàn)了功能但是有一個(gè)問(wèn)題,就是左邊的項(xiàng)到了右邊后變成了倒序。這是我們需要將添加和移出分開寫,代碼:
復(fù)制代碼 代碼如下:
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);
}
到現(xiàn)在為止還一個(gè)問(wèn)題就是當(dāng)選擇框中的前面幾個(gè)項(xiàng)的時(shí)候右移沒(méi)有問(wèn)題,但選擇后面幾個(gè)項(xiàng)時(shí)移到右邊框中的是后面幾個(gè)項(xiàng),而左邊框中移出的是前面幾個(gè)項(xiàng),造成這個(gè)問(wèn)題的原因是我們將
SelectedItems和Items混為一談了。這是很多初學(xué)者容易犯的錯(cuò)誤。代碼:
復(fù)制代碼 代碼如下:
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);
}
這樣的話就對(duì)了。
個(gè)人自學(xué)不知說(shuō)的對(duì)不對(duì),希望各位支持支持,歡迎指正。
您可能感興趣的文章:- 使用VS2010 C#開發(fā)ActiveX控件(上)
- C# TreeView控件使用代碼
- c#重寫TabControl控件實(shí)現(xiàn)關(guān)閉按鈕的方法
- C#數(shù)據(jù)綁定控件中的DataSource屬性淺談
- 解析C#自定義控件的制作與使用實(shí)例的詳解
- C# 開發(fā)圓角控件(窗體)的具體實(shí)現(xiàn)
- c# table 控件用法
- C#波形圖控件制作示例程序
- C#自定義控件添加右鍵菜單的方法
- C#動(dòng)態(tài)代碼生成控件后其他事件不能獲取該控件值的解決方法