【问题标题】:How to show only a substring of an item in a ComboBox in C#如何在 C# 的 ComboBox 中仅显示项目的子字符串
【发布时间】:2012-06-15 19:24:52
【问题描述】:

我在ComboBox 中有一些公司名称作为项目,如下所示:

123 SomeCompany

始终是 100 到 999 之间的数字加上公司名称。

现在,如果用户选择一个项目,我希望文本框只显示数字,而不是公司名称。他的公司名称应该只有在他下拉组合框时才可见...

我尝试在 SelectedIndexChanged-Event 和 TextChanged-Event 中设置ComboBox1.Text = ComboBox.Text.Substring(0, 3),但它没有做任何事情,ComboBox 中总是有所有内容...

AutocompleteMode 设置为 none

我做错了什么?

【问题讨论】:

  • 您尝试设置SelectedText 吗?
  • 女巫TextBox要设置吗?
  • 我试过这个:ComboBox.selectionstart = 0 我之前尝试过你的建议,但它也没有做任何事情......
  • 对不起,我犯了一个错误,它是comobox而不是文本框......

标签: c# winforms combobox


【解决方案1】:

要始终格式化值,您可以使用 Format 事件(FormattingEnabled = true)

    private void comboBox1_Format(object sender, ListControlConvertEventArgs e)
    {   
          e.Value = e.Value.ToString().Substring(0, 3);
    }

但如果您希望在显示下拉菜单时显示完整值,您可以暂时禁用格式设置:

    private void comboBox1_DropDown(object sender, EventArgs e)
    {
        comboBox1.FormattingEnabled = false;
    }

    private void comboBox1_DropDownClosed(object sender, EventArgs e)
    {
        comboBox1.FormattingEnabled = true;
    }

【讨论】:

    【解决方案2】:

    试试这个

    textbox1.Text = ComboBox1.SelectedItem.ToString().SubString(0, 3);
    

    【讨论】:

      【解决方案3】:

      试试这样的:

      private void combox1_ SelectedIndexChanged(object sender,EventArgs e)
      {
            string value = (combox1.selectedItem != null) ? 
                combox1.selectedItem.ToString().Substring(0, 3) : string.Empty;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-12
        • 2018-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多