【问题标题】:ComboBox don't allow empty value to the userComboBox 不允许用户使用空值
【发布时间】:2015-06-28 04:59:02
【问题描述】:

我希望用户不能从 ComboBox 中选择“空”选项(下拉样式)。如果用户用他的键盘删除 ComboBox 的文本,则可以这样做。我尝试了一个 SelectedIndexChanged 事件并尝试检测用户是否将值设置为 null 并将其更改为 0。但是,当值设置为 null 时(即使用户从键盘敲击回车),此事件也不会触发。

任何可能的解决方案?

【问题讨论】:

  • 不要有空选项。
  • @depperm(已编辑问题)我该怎么做?他总是可以用他的键盘删除组合框的文本
  • 您希望用户在您的框中输入内容吗?
  • “我不介意”是一回事,不需要它——另一回事。您是否有这么多项目,用户会更好地输入并在列表中搜索?如果您可以摆脱打字部分并移动到用户只能选择的下拉列表 - 生活将变得轻松
  • 你需要阻止用户更改文本框本身的文本,看起来很有问题......正在检查......

标签: c# winforms combobox


【解决方案1】:

将 ComboBox 的 DropDownStyle 设置为 DropDownList

并在表单的构造函数中添加如下内容:

yourComboBox.SelectedIndex = (yourComboBox.Items.Count > 0) ? 0: -1;

【讨论】:

    【解决方案2】:

    如果您要求用户能够输入自定义值,您可以将下拉样式更改为仅允许从列表中选择项目。如果您随后设置默认选项,则用户将永远不会选择空选项。

    例如:

    comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
    comboBox.SelectedIndex = 0;
    

    【讨论】:

    • 我觉得这是最有用的答案。
    【解决方案3】:

    我感觉您可能正在为 UI 逻辑而苦苦挣扎。如果您不想有空的项目,那就不要添加一个。但通常有一个“空项目”是有用的。原因之一是,如果您为用户选择了某些内容,用户只需单击“保存”或其他内容,而不会更改该值并具有错误的值。

    使用SelectedIndex 属性来确定在验证期间选择了什么。

    // init
    cbo.comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
    cbo.Items.Add("Select Letter") // first "empty" item
    cbo.Items.Add("A")
    cbo.Items.Add("B")
    cbo.Items.Add("C")
    
    // ---
    void Save()
    {
        if (cbo.SelecteIndex < 1)
        {
            MessageBox.Show("Please select letter");
            return;
        }
    
        // "save" code here
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-25
      • 2011-07-17
      • 2021-06-26
      • 1970-01-01
      • 2011-07-14
      • 2013-05-11
      • 1970-01-01
      相关资源
      最近更新 更多