WithCoderWithCoderWithCoder

C#设置ComboBox列表集合(类似html的select标签)

    今天要使用C#开发一个简单的桌面程序,其中要用到类似html的select标签的下拉列表,所以选择了ComboBox控件。本文就ComboBox的使用做简单的介绍。

    1. 新建Form窗体,添加ComboBox控件

        在项目中新建一个Form窗体,然后从工具箱中拖放一个ComboBox控件到窗体上,将ComboBox的name设置为“cmbox”。

        1-200416160523101.png

    2. 生成ComboBox控件的数据源

        在Form类中,自定义一个私有数据源对象类Item,类中添加两个属性id和text,如下:        

        private class Item
        {
            public Item(int id, string text)
            {
                this.id = id;
                this.text = text;
            }
            
            private int id;
            private string text;
            
            public string Text
            {
                get
                {
                    return this.text;
                }
            }
            
            public int ID
            {
                get
                {
                    return this.id;
                }
            }
        }

        给ComboBox的属性Items添加列表项,并设置ComboBox的ValueMemeber和DisplayMember属性对应的字段名称,如下:        

        private void createItems()
        {
            this.cmbox.Items.Add(new Item(1, "男"));
            this.cmbox.Items.Add(new Item(2, "女"));
            this.cmbox.Items.Add(new Item(3, "未知"));
            
            this.cmbox.DisplayMember = "Text";
            this.cmbox.ValueMember = "ID";
        }

        在窗体初始化代码中调用createItems方法,程序启动后,可以看到ComboBox绑定了对应的数据源,如下:

        1-2004161611434G.png          

    3. 绑定选中项改变事件

        绑定数据源后,我们可以通过ComboBox的SelectedIndexChanged事件,监听列表项改变事件并做相应的业务处理。如下,在此事件中,我们可以获取当前选中的索引,以及选中项的相关信息。        

        // 选择改变事件
        private void cmbox_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox box = (ComboBox)sender;
            
            // 选择索引
            MessageBox.Show(box.SelectedIndex.ToString());
            
            // 选择项
            Item item = (Item)box.SelectedItem;
            MessageBox.Show("ID:" + item.ID.ToString() + " Text:" + item.Text);
        }

    其他设置:

    1. 设置默认选中项

        可以通过SelectedIndex属性,设置ComboBox的默认选中项

            // 默认选中第一个列表项
            this.cmbox.SelectedIndex = 0;

    2. 设置ComboBox不可编辑

        ComboBox的DropDownStyle默认样式为“DropDown”,程序启动后输入框中可以进行编辑操作。如果想让ComboBox不可编辑,可以将DropDownStyle属性的值设置为“DropDownList”   

            // 设置DropDownStyle = ComboBoxStyle.DropDownList,这样设置后ComboBox不可编辑
            this.cmbox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;

    完整代码如下(不包含Form窗体设计代码):   

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
            // 生成combox列表项
            this.createItems();
            
            // 默认选中第一个列表项
            this.cmbox.SelectedIndex = 0;
            
            // 设置DropDownStyle = ComboBoxStyle.DropDownList,这样设置后ComboBox不可编辑
            this.cmbox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
        }
        
        private class Item
        {
            public Item(int id, string text)
            {
                this.id = id;
                this.text = text;
            }
            
            private int id;
            private string text;
            
            public string Text
            {
                get
                {
                    return this.text;
                }
            }
            
            public int ID
            {
                get
                {
                    return this.id;
                }
            }
        }
        
        private void createItems()
        {
            this.cmbox.Items.Add(new Item(1, "男"));
            this.cmbox.Items.Add(new Item(2, "女"));
            this.cmbox.Items.Add(new Item(3, "未知"));
            
            this.cmbox.DisplayMember = "Text";
            this.cmbox.ValueMember = "ID";
        }
        
        // 选择改变事件
        private void cmbox_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox box = (ComboBox)sender;
            
            // 选择索引
            MessageBox.Show(box.SelectedIndex.ToString());
            
            // 选择项
            Item item = (Item)box.SelectedItem;
            MessageBox.Show("ID:" + item.ID.ToString() + " Text:" + item.Text);
        }
    }

欢迎分享交流,转载请注明出处:WithCoder » C#设置ComboBox列表集合(类似html的select标签)