2013-01-14 141 views
5

我在写一个包含一些按钮和组合框的表单。 默认情况下,“确定”按钮处于禁用状态,我希望仅在选择实际值(不是组合框名称)后启用它。检查是否选择了ComboBox值

我知道如何访问选定的值,以及如何检查是否选择了一个值 - 但只有在窗体关闭后才能完成这两项操作(使用“x”或使用“ok”按钮 - 这是禁用的)。

任何想法?

谢谢。

+0

这对我来说已经有一段时间了,所以我不会写一个答案。但是你不能在UI对象所绑定的属性中检查它吗? – Kevin

+0

您是否尝试过使用'ComboBox.SelectedIndexChanged'事件 –

回答

7

也许这样:

private void comboBox_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (comboBox.SelectedIndex > -1) 
     { 
      buttonOK.Enabled = true; 
     } 
    } 

默认情况下,组合框的选定索引是-1(组合框的名称,在选择另一个索引后不能重新选择),因此如果检查它不是-1,那么您知道已经选择了一个值。

然而,另一种选择和我使用的是,如果我总是希望选择一个值是使用DropDownStyle属性并将其设置为DropDownList。这种方式索引0是默认选择的,用户只能从列表中选择项目,而不是其他项目。

0

如果选择COMBOX盒可以使用下拉框选择的指数变化情况

添加到您的InitializeComboBox类

this.ComboBox1.SelectedIndexChanged += 
      new System.EventHandler(ComboBox1_SelectedIndexChanged); 

然后在选定的指数变化情况下,您可以检查

private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    ComboBox cbx= (ComboBox) sender; 
    Button1.Enabled = !string.IsNullOrEmpty(cbx.SelectedItem.ToString()); 
} 
+0

我不知道为什么这有一个+1,它实际上禁用了按钮时,选择了某些东西。 – Mitch

+0

@MitchTWC如果选择了某些东西'string.IsNullOrEmpty'将会是'false',并且我正在检查'!string.IsNullOrEmpty',它将返回true并且启用按钮。不知道为什么你认为它会被禁用。你能解释一下吗 –

+0

我刚刚试过你的例子,当我从组合框中选择一个项目时,它会禁用我的按钮。 cbx.SelectedText返回一个空字符串。你需要使用cbx.Text – Mitch

0
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (comboBox1.SelectedIndex == -1) 
      button1.Enabled = false; 
     else 
      button1.Enabled = true; 

     //or 
     //button1.Enabled = comboBox1.SelectedIndex == -1; 
    } 
+0

这不工作'comboBox1.SelectedValue'返回null,即使从组合框中选择一些东西。 – Mitch

+0

我更新了我的答案。 – spajce

+0

当没有选择任何东西时,它现在启用按钮,只有在选择了某些东西时才需要启用按钮。 :P 编辑:哈哈我看到你的忍者编辑;) – Mitch

相关问题