2013-01-14 180 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

相關問題