1. 程式人生 > >c#(winform)中ComboBox和ListBox新增項,寫一個使用者控制元件

c#(winform)中ComboBox和ListBox新增項,寫一個使用者控制元件

用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";

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;//設定指定的項為預設選擇項
        }
    }
}