2011-12-16 40 views
1

我正在使用幾個checkboxcomboboxes。對於我的溶劑,其中一個盒子需要在特定情況下表現爲組合框。我只需要選擇一個值。我嘗試了以下內容:選擇一個值checkboxCombobox

private void PreDefSerials_SelectedValueChanged(object sender, EventArgs e) 
    { 
     if (!one_select) 
      return; 
     else 
     { 
      // set selected value 
      if (PreDefSerials.SelectedIndex != 0) 
      PreDefSerials.CheckBoxItems[PreDefSerials.SelectedIndex].CheckState = CheckState.Checked; 
      return; 
     } 
    } 

EDTI:

我怎樣才能設置項目的所有checkstateds不選擇和aftwerwards使最新選擇的值的checkstate選定的?

+0

你的意思是說,事件不發射?或者你在上述活動中遇到錯誤?或者是什麼?請清楚.. – dotNETbeginner 2011-12-16 12:06:48

回答

1

我不熟悉的控制,所以我可能沒有所有的語法正確的,但我認爲你可以嘗試通過您的項目和「取消選中」任何被檢查循環。此外,你將不得不關閉「關閉」事件暫時否則這一事件可能會持續觸發對每一個「取消」:

private void PreDefSerials_SelectedValueChanged(object sender, EventArgs e) 
{ 
    if (!one_select) 
    return; 
    else 
    { 
    if (PreDefSerials.SelectedIndex > -1) 
    { 
     //only uncheck items if the current item was checked: 
     if (PreDefSerials.CheckBoxItems[PreDefSerials.SelectedIndex].CheckState == CheckState.Checked) 
     { 
     // stop firing event for now: 
     PreDefSerials.SelectedValueChanged -= PreDefSerials_SelectedValueChanged; 

     for (int i = 0; i < PreDefSerials.CheckBoxItems.Count; i++) 
     { 
      if (i != PreDefSerials.SelectedIndex) 
      { 
      PreDefSerials.CheckBoxItems[i].CheckState = CheckState.Unchecked; 
      } 
     } 

     // wire event again: 
     PreDefSerials.SelectedValueChanged += PreDefSerials_SelectedValueChanged; 
     } 
    } 
    } 
} 

這是假設當你檢查項目,將得到遏制並開火此事件。該代碼只是通過列表,然後「取消」其他所有內容。根據需要重構。

+0

看起來不錯,但我得到這部分代碼的錯誤: PreDefSerials - = PreDefSerials_SelectedValueChanged; 錯誤無法將方法組「PreDefSerials_SelectedValueChanged」轉換爲非委託類型「PresentationControls.CheckBoxComboBox」。你打算採用這種方法嗎? – Moonlight 2011-12-16 14:51:30