2012-04-07 39 views
0

問題 - 每當我將自定義ComboBox設置爲「ON」時,它將暫時變爲「ON」,但它偶爾會切換到「OFF」。調試自定義Windows.Forms.ComboBox

基本上我有一種方法:

void value_SelectedIndexChanged(object sender, EventArgs e) 
{ 

    if((ComboBox)sender.Focused == true) 
    { 
     if(value.SelectedIndex == false) // OFF 
     // set a bunch of variables for OFF 
     else // ON 
     // set a bunch of variables for ON 
    } 
} 

後我設置組合框爲「ON」時,則執行用於「ON」選擇的索引的代碼路徑。但是,然後,選擇的索引切換到「關閉」,出於我不明白的原因。結果,關閉變量代碼路徑然後執行。

要試圖修復它,我把日誌語句來捕獲發送者和EventArgs的每當這個「value_SelectedIndexChanged」方法被調用。然而,發件人等於類,EventArgs是System.EventArgs。

請告訴我如何調試這個問題。

回答

0

我不明白爲什麼你組織你的代碼的方式。那豈不是更有意義是這樣的:

void value_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    switch(value.SelectedIndex) 
    { 
    case 0: // OFF 
     // set a bunch of variables for OFF 
     break; 
    case 1: // ON 
     // set a bunch of variables for ON 
     break; 
    } 
} 

的問題可能是由「設置一組變量爲OFF」 -actions引起的。你是否已經通過在處理程序中設置斷點並逐步完成所有測試來測試它?

+0

Simon,我已經介紹了設置OFF變量的代碼。但是,我沒有看到任何可能會改變值的selectedIndex的代碼。我不太熟悉GUI。什麼通常會觸發selectedIndex中的更改? – 2012-04-07 01:56:15

+0

另外,我不完全理解檢查ComboBox是否集中的第一個if語句。我同意你的代碼清楚。 – 2012-04-07 01:57:37

+0

以任何方式更改選區都會更改SelectedIndex屬性。所以這可能是由更改支持ComboBox的數據,更改SelectedItem屬性或其他一些內容引起的。 在方法的末尾添加斷點和單步可能會給出一些線索,說明導致第二次更改的原因。 – Simon 2012-04-09 23:03:03