2015-06-27 67 views
1

我希望用户不能从ComboBox(下拉样式)中选择“空”选项。如果用户用他的键盘删除了ComboBox的文本,就可以做到这一点。我尝试了一个SelectedIndexChanged事件,并尝试检测用户是否将值设置为空,并将其更改为0。但是,当该值设置为空时(即使用户从键盘输入时),该事件不会触发。组合框不允许给用户空值

任何可能的解决方案?

+2

没有空白选项。 – depperm

+0

@depperm(编辑的问题)我该怎么做?他总是可以用他的键盘删除组合框的文字 – dimitris93

+0

你想让用户输入你的盒子吗? –

回答

1

设置您的组合框的DropDownStyleDropDownList

enter image description here

,并在窗体的构造函数中添加如下内容:

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

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

例如:

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

我有感觉,你可能是,与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 
}