c#(winform)中ComboBox和ListBox添加项和设定预选项完全解决

    技术2022-05-19  23

    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;    //显示的文字


    最新回复(0)