首页 > 编程笔记 > C#笔记 阅读:3

C# ComboBox下拉列表的用法(附带实例)

ComboBox 可以翻译为下拉组合框,又称下拉列表,此控件基本上是列表(ListBox)功能的扩充,兼具文本框(TextBox)和列表(ListBox)功能。

下拉列表与清单的最大差异是,当未选择时,下拉列表像文本框,清单部分是隐藏的。选择后,所选项目会出现在文本框中。此外,下拉列表右边有按钮,按此按钮可以出现下拉组合框,可以由此选择想要的列表项目。


此外,所选择的项目会在上方的文本框中显示,如果在下拉组合框找不到项目,也可以在上方的文本框中自行创建此项目。

C# ComboBox常用属性

由于 ComboBox 的功能和 ListBox 功能有许多类似,因此也有许多属性功能是一样的。与其他控件一样 ComboBox 可以在属性窗口设定其属性,或是使用程序代码设定,下面是其几个常用的属性。

ComboBox 属性名称 说明
Items 可以创建下拉式列表项目。
DropDownStyle 这是下拉组合框的外观与功能格式,有下列 3 种格式:
  • Simple:看起来就像是 TextBox。
  • DropDownList:只能在下拉组合框选择列表项目。
  • DropDown:这是默认,可从下拉组合框选择,也可以手动输入
DroppedDown 程序设计阶段才可以使用,如果是 True 会主动显示下拉组合框,默认是 False
MaxDropDownItems 下拉组合框显示的列表项目数量,超出此数量时会有滚动条
MaxLength 指定下拉组合框中最大的字符数目
Text 下拉组合框上方文本框的内容

C# ComboBox事件

设计 ComboBox 时常用的事件有下列两种:
【实例 1】在 ComboBox 创建选择列表项目,其下方使用标签列出所选的项目。


控件 名称 (Name) 标题 (Text) 大小 (Size) 位置 (Location)
Form Form1 ch30_23 (400, 250) (0, 0)
ComboBox comboBox1   (198, 31) (90, 26)
Label label1 尚未选取 (82, 23) (148, 140)
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        label1.Text = comboBox1.Text;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        string[] cards = { "金卡会员", "银卡会员", "普通卡会员" };
        comboBox1.Items.AddRange(cards); // 创建列表项目
    }
}
执行结果为:


【实例 2】结账系统,这个程序可以点选 cboCoffee 下拉组合框的咖啡品项,然后右边会跳出单价,这个 cboCoffee 无法自行增加品项,所以设计时采用 DropDownList 属性,可以参考程序第 17 行的设定。当选择咖啡品项后,可以选择 cboNumber 下拉组合框的数量,这个 cboNumber 可以自行增加数量,所以设计时采用默认的 DropDown 属性。单击“结账”按钮,可以结账。单击“清除”按钮,可以复原程序执行初的设定。


控件 名称 (Name) 标题 (Text) 大小 (Size) 位置 (Location)
Form Form1 ch30_24 (560, 330) (0, 0)
Label label1 品项 (46, 23) (77, 39)
Label label2 单价 (46, 23) (380, 39)
Label labUnitPrice 0 (23, 23) (432, 39)
Label label4 数量 (46, 23) (77, 99)
Label label5 总金额 (64, 23) (362, 152)
Label lblTotal 0 (20, 23) (432, 152)
Button button1 结账 (112, 34) (127, 201)
Button button2 清除 (112, 34) (300, 201)
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        string[] coffees = { "尚未选择", "义式咖啡", "美式咖啡", "拿铁" };
        cboCoffee.Items.AddRange(coffees); // 创建咖啡项目
        // 咖啡品项无法更改 DropDownList
        cboCoffee.DropDownStyle = ComboBoxStyle.DropDownList;
        cboCoffee.SelectedIndex = 0; // 显示索引 0

        for (int i = 0; i <= 5; i++) // 建立数量项目
            cboNumber.Items.Add(i.ToString());
        cboNumber.SelectedIndex = 0; // 显示索引 0
    }

    private void button2_Click(object sender, EventArgs e)
    {
        // 按清除钮执行
        cboCoffee.SelectedIndex = 0; // 创建索引 0
        cboNumber.SelectedIndex = 0; // 创建索引 0
        lblUnitPrice.Text = "0"; // 创建单价
        lblTotal.Text = "0"; // 显示总金额
    }

    private void cboCoffee_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cboCoffee.Text.Equals("义式咖啡"))
            lblUnitPrice.Text = "120";
        else if (cboCoffee.Text.Equals("美式咖啡"))
            lblUnitPrice.Text = "100";
        else if (cboCoffee.Text.Equals("拿铁"))
            lblUnitPrice.Text = "150";
    }

    private void button1_Click(object sender, EventArgs e)
    {
        // 结账
        int n = Convert.ToInt32(cboNumber.Text); // 单价
        int u = Convert.ToInt32(lblUnitPrice.Text); // 数量
        lblTotal.Text = (n * u).ToString(); // 总价
    }
}
执行结果为:


上方右下图是在数量字段,笔者输入 10,这是在自行增加列表选项。

相关文章