Visual C#ComboBox下拉宽度

时间:2017-01-23 13:12:09

标签: c# visual-studio-2010 combobox

我正在使用Visual Studio 2010在Windows 7上构建C#Windows窗体应用程序(而不是WPF) 我的应用程序包含一个ComboBox 我想显示代码和说明列表。 我希望下拉列表显示代码和说明,但我希望文本框中的选定项目只显示代码。
我希望下拉列表比文本框宽,如image所示 我希望下拉列表向文本框显示不同的数据,如此image所示 - 只显示相关代码而不是图标,其中每个代码都由一个大写字母组成。 /> 我猜我需要组合[ComboBox]属性 DisplayMember ValueMember 和可能 DropDownWidth 以及<的处理程序em> SelectedIndexChanged 事件。正确吗?
哦,是的,为了使用 DisplayMember ValueMember 属性,我还需要使用 DataSource 属性。对?

谢谢,
阿维。

2 个答案:

答案 0 :(得分:0)

在将值设置为ComboBox时使用分隔符,即此字符串中的"This is value => this is description"=>是分隔符,您可以根据此分隔符拆分此值,以显示项目的第一部分或最后部分。

答案 1 :(得分:0)

使用将显示为ComboBox项的数据创建类,并覆盖其ToString()方法,如下所示:

public class ComboItem
{
    public string Text { get; set; }
    public int ID { get; set; }
    public string Description { get; set; }

    public override string ToString()
    {
        return Text;
    }
}

然后,在示例中的page load事件

中填写包含项目的组合框
ComboItem ci = new ComboItem() { ID = 1, Text = "code number 1", Description = "Description of item number 1" };
comboBox1.Items.Add(ci);
ci = new ComboItem() { ID = 2, Text = "code number 2", Description = "Description of item number 2" };
comboBox1.Items.Add(ci);

在需要时提取描述(即,当用户从组合框中选择某些内容时):

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    ComboItem ci = comboBox1.SelectedItem as ComboItem;
    string description = ci.Description; //here's your description
}