c#(winform)中ComboBox和ListBox新增項,寫一個使用者控制元件
阿新 • • 發佈:2019-02-18
用comboBox的資料繫結的方法很簡單,建一個數據源,繫結到ComboBox上,然後指定DisplayMember和 ValueMember就可以了。但是感覺好不靈活哦,如果我要在ComboBox上再新增一項,那怎麼辦?Web裡面有ListItem, winform裡面怎麼沒有了?感覺真是不爽,網上找了個方法,自己新增一個ListItem類,然後add到items裡面,感覺還不錯,有點象web 裡面的用法了,可是問題又來了,新增的第一項怎麼變成類名了?不是我給它賦的名字,其他項又都沒有問題。於是又查到說,“因為combobox的
Item.ADD(一個任意型別的變數),而顯示的時候呼叫的是這個變數的ToString()方法,如果這個類沒有過載ToString(),那麼顯示的結果就是名稱空間 + 類名”,於是加上過載的ToString()方法,好了,至此,我終於可以很方便的來給ComboBox和ListBox新增項了。
ListItem item = new ListItem("我是值", "我是名字");
this.lbChoiceRoom.Items.Add(item);
this.lbChoiceRoom.DisplayMember = "Name";
ListItem item = new ListItem("我是值", "我是名字");
this.lbChoiceRoom.Items.Add(item);
this.lbChoiceRoom.DisplayMember = "Name";
this.lbChoiceRoom.ValueMember = "ID";
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WinListItem { /// <summary> /// 選擇項類,用於ComboBox或者ListBox新增項 /// </summary> public class ListItem { private string id = string.Empty; private string name = string.Empty; public ListItem(string sid, string sname) { id = sid; name = sname; } public override string ToString() { return this.name; } public string ID { get { return this.id; } set { this.id = value; } } public string Name { get { return this.name; } set { this.name = value; } } } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WinListItem { public partial class MainFrm : Form { public MainFrm() { InitializeComponent(); } private void btnOk_Click(object sender, EventArgs e) { ListItem listItem = comboBox1.SelectedItem as ListItem; MessageBox.Show(listItem.ID + "," + listItem.Name); } private void MainFrm_Load(object sender, EventArgs e) { //新增項,Web控制元件DropDownList有對應的ListItem ListItem listItem0 = new ListItem("0", "選項零"); ListItem listItem1 = new ListItem("1", "選項一"); ListItem listItem2 = new ListItem("2", "選項二"); comboBox1.Items.Add(listItem0); comboBox1.Items.Add(listItem1); comboBox1.Items.Add(listItem2); //設定預設選擇項,DropDownList會預設選擇第一項。 comboBox1.SelectedIndex = 0;//設定第一項為預設選擇項。 comboBox1.SelectedItem = listItem1;//設定指定的項為預設選擇項 } } }