Winform开发常用控件之ComboBox、ListBox

ComboBox就是我们常见的下拉框,对于此类控件,我们最关心的当然是数据的绑定和选择值得获取。

首先介绍个属性DropDownStyle,如果不允许ComboBox输入值,只能选择,就选DropDownList,默认是DropDown。可以试一试看看效果。

1、简单的数据加载和值选取

与前面介绍的CheckBox类似,还是在items集合中设置选择项,然后取值即可,贴图和代码

 //在combobox中选择值变化中直接取选中的项,然后赋值给label

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

        {

            label1.Text = comboBox1.SelectedItem.ToString() ;

        }
 //点击按钮取值,即在其他方法中取到combobox选中的值,其实一样的

        private void button1_Click(object sender, EventArgs e)

        {

            label1.Text =comboBox1.SelectedItem.ToString();

        }

Winform开发常用控件之ComboBox、ListBox从代码中可以看到,无论是comboBox自身事件取值还是其他方法中取值,都是一样的

2、ComboBox绑定数组

这个也可以用数组赋值,上代码和图

//将数组项一一添加到checkedListBox上

            String[] arr = new String[] { "足球","篮球","排球"};

            for (int i = 0; i < arr.Length; i++)

            {

                comboBox1.Items.Add(arr[i]);

            }

            //下面两种方法都可以为ComboBox赋初试选中值

            //comboBox1.SelectedIndex = 0;

            comboBox1.SelectedItem = "排球";

Winform开发常用控件之ComboBox、ListBox

3、ComboBox绑定DataTable并获取选中的值

private void Form1_Load(object sender, EventArgs e)

        {

            //先构造一个dataTable,或者从数据库读取到一个,这里自己构造一个

            DataTable dataTable = new DataTable("Student");

            dataTable.Columns.Add("Number", typeof(String));

            dataTable.Columns.Add("Name", typeof(String));

            dataTable.Columns.Add("RealName", typeof(String));

            dataTable.Columns.Add("UserName", typeof(String));

            dataTable.Columns.Add("Address", typeof(String));

            dataTable.Rows.Add(new String[] { "1", "James", "张三", "james.zhang", "长沙" });

            dataTable.Rows.Add(new String[] { "2", "Mary", "李四", "mary.xu", "山东" });

            dataTable.Rows.Add(new String[] { "3", "Jack", "王五", "jack.li", "台湾" });

            dataTable.Rows.Add(new String[] { "4", "joy", "赵六", "joy.zhou", "济南" });

            dataTable.Rows.Add(new String[] { "5", "jay", "钱七", "jay.ji", "美国" });

            dataTable.Rows.Add(new String[] { "6", "stephen", "康忠鑫", "Stephen.Kang", "深圳" });



            comboBox1.DataSource = dataTable;//绑定

            comboBox1.DisplayMember = dataTable.Columns[2].ColumnName;//显示的文本

            comboBox1.ValueMember = dataTable.Columns[1].ColumnName;//对应的值

        }



        private void button1_Click(object sender, EventArgs e)

        {

            //获取显示的文本和选中的值

            MessageBox.Show("您选择的是" + comboBox1.GetItemText(comboBox1.Items[comboBox1.SelectedIndex]) + "|" + comboBox1.SelectedValue);

        }

Winform开发常用控件之ComboBox、ListBox

下面的获取方法可以获取绑定的dataTable里面的其他列值

private void button1_Click(object sender, EventArgs e)

        {

            //获取显示的文本和选中的值          

            DataRowView dr = (DataRowView)comboBox1.Items[comboBox1.SelectedIndex];

            MessageBox.Show(dr[4].ToString());//根据dr的index,获取datable里面的其他值

        }

这里取第四列Address
Winform开发常用控件之ComboBox、ListBox

4、ComboBox绑定List,并获取值

  private void Form1_Load(object sender, EventArgs e)

        {

            //这里构造一个List,当然也可以从数据库中获取

            IList<Student> lst = new List<Student>();

            Student stu1 = new Student();

            stu1.Name = "王五";

            stu1.Address = "北京市";

            lst.Add(stu1);

            Student stu2 = new Student();

            stu2.Name = "李四";

            stu2.Address = "上海市";           

            lst.Add(stu2);



            comboBox1.DataSource = lst;//绑定

            comboBox1.DisplayMember = "Name";//显示的文本

            comboBox1.ValueMember ="Address";//对应的值

        }



        private void button1_Click(object sender, EventArgs e)

        {

            //获取显示文本和值

            MessageBox.Show("您选择的是" + comboBox1.GetItemText(comboBox1.Items[comboBox1.SelectedIndex]) + "|" + comboBox1.SelectedValue);

        }

效果图
Winform开发常用控件之ComboBox、ListBox

当然ComboBox还有很多种用法,比如加载带有多选框或单选按钮的列表,有感兴趣的朋友可以再研究,以后项目如果使用到偶也会贴出来的。

ListBox用法与ComboBox用法完全一样滴哦,只需将comboBox1换为listBox1即可。贴个图看看ListBox是个什么东东?

Winform开发常用控件之ComboBox、ListBox对,就是这样的,就是展示方式不一样而已。

你可能感兴趣的:(combobox)