【问题标题】:Visual C# ComboBox Dropdown WidthVisual C# 组合框下拉宽度
【发布时间】:2017-06-08 00:21:11
【问题描述】:

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

谢谢,
AVI。

【问题讨论】:

  • ...到目前为止,您取得了什么成就?可以分享一下吗?
  • 最终通过一个自定义类解决了这个问题,该类具有两个属性,分别是 DisplayMemberValueMember 属性。然后创建了一个自定义类的实例集合,作为 DataSource 属性。最后使用 DropDownWidth 属性使下拉列表变宽并设置窄文本字段宽度。感谢所有试图提供帮助的人。

标签: c# visual-studio-2010 combobox


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用将显示为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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 2018-02-09
      相关资源
      最近更新 更多