c#(winform)中ComboBox和ListBox添加項 索引值對 形式

來源:互聯網
上載者:User

轉載於:http://blog.csdn.net/fcsh820/article/details/3867053

感謝原作者分享這麼好的文章。

 

WinForm下的ComboBox預設是以多行文本來設定顯示列表的, 這通常不符合大家日常的應用,

因為大家日常應用通常是鍵/值對的形式去綁定它的.

那麼用索引值對的形式如何做?

因為Combox的每一個項的值是一個object, 實際上就是一個鍵/值對.
我用的是下面這個類的執行個體作為它的一個項:

    /// <summary>
    /// ComboBox的項
    /// </summary>
    class ListItem : System.Object
    {
        private string _Value = string.Empty;
        private string _Text = string.Empty;

        /// <summary>
        /// 值
        /// </summary>
        public string Value
        {
            get { return this._Value; }

           set { this._Value=value; }
        }
        /// <summary>
        /// 顯示的文本
        /// </summary>
        public string Text
        {
            get { return this._Text; }

           set { this._Text=value; }
        }

        public ListItem(string value, string text)
        {
            this._Value = value;
            this._Text = text;
        }
        public override string ToString()
        {
            return this._Text;
        }

    }

 

 通過這個類就可以定義ComboBox的值了, 首先我們定義一個ListItem的清單作為ComboBox的資料來源:

            List<ListItem> items = new List<ListItem>();
            items.Add(new ListItem("0", "Item_0_Text"));
            items.Add(new ListItem("1", "Item_1_Text"));
            items.Add(new ListItem("2", "Item_2_Text"));
            items.Add(new ListItem("3", "Item_3_Text"));
            items.Add(new ListItem("4", "Item_4_Text"));
            items.Add(new ListItem("5", "Item_5_Text"));

 

 然後進行相應的設定:

            //將資料來源的屬性與ComboBox的屬性對應
            drpTest.DisplayMember = "Text";        //顯示
            drpTest.ValueMember = "Value";        //值

 

然後進就可以進行綁定了:

            drpTest.DataSource = items;        //綁定資料

 

綁定資料之後, 就可以對其進行預設選擇項的設定, 取值等操作:

            drpTest.SelectedValue = "4";        //設定選擇項

            //取得當前選擇的項
            ListItem selectedItem = (ListItem)drpTest.SelectedItem;
            string value = selectedItem.Value;    //值
            string text = selectedItem.Text;    //顯示的文字

 

 

////////////////////////////////////////////////////////////////////////////////////////////

根據原作者的文章。我想到了這個方法:

        private void LoadComboboxYear()

        {

            List<KeyValuePair<string, int>> listItem = new List<KeyValuePair<string, int>>();

            listItem.Add(new KeyValuePair<string, int>("2011年", 2011));

            listItem.Add(new KeyValuePair<string, int>("2012年", 2012));

            comboBox3.DataSource = listItem;

            comboBox3.DisplayMember = "Key";

            comboBox3.ValueMember = "Value";

            comboBox3.SelectedIndex = 0;

        }

取資料:

        private void button1_Click(object sender, EventArgs e)

        {

            KeyValuePair<string, int> keyValue = (KeyValuePair<string,int>)comboBox3.SelectedItem;

            MessageBox.Show("key:" + keyValue.Key + ",value:" + keyValue.Value);

        }

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.