2014-01-22 28 views
0

背景C#監聽組合框中選擇更改

我寫了一個C#應用程序與SQL數據庫交互。最近的功能請求是允許不同類型的身份驗證(3種類型)。我最初決定使用3個單選按鈕(每個驗證選項一個)和2個文本框(用戶名/密碼)。這工作得很好,所有的後臺代碼工作正常,但他們現在要求,當他們使用SSPI身份驗證(不需要用戶額外輸入),我灰色的文本框,所以信息不能輸入,當其他兩個選項之一被選中,以允許框再次可編輯。爲了使這個清潔我現在有一個單一的組合框3項(auth)和2個文本框(un/pw)。

問題

我如何讓應用程序監聽用戶點擊運行之前更改組合框?我總是使用一個按鈕作爲催化劑事件,並且之前不需要這樣做。我已經看到了幾個例子,我可以使用這個條件(如果選擇的索引等於x),但它似乎需要我按下開始按鈕,而不是一個可行的解決方案。我也發現這個例子C# -comboBox Selected IndexChange,我不太明白,我相信需要2盒,但我不知道爲什麼。

須藤代碼

if ((combobox item is not selected) or (combobox selection == indexitem1)) 
{ 
    //then keep textboxes read only 
} 
else 
{ 
    //change textbox to editable 
} 

要求

我需要這個監聽器能夠告訴當組合框選擇任何3個選擇和移動的任何人,並會正確地之間更改文本框以反映當前選擇,而不管之前狀態爲當前狀態。

任何幫助,非常感謝。鏈接,代碼,評論,問題。一切都可以幫助我看到我還沒有的東西,或幫助我尋找更好的答案。謝謝!

解決方案

我想通了這一點

private void AuthSelect_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      //listen if combobox selection is changed 
      if ((AuthSelect.SelectedIndex == 0) || (AuthSelect.SelectedIndex == -1)) 
      { 
       userName.ReadOnly = true; 
       password.ReadOnly = true; 
      } 
      else 
      { 
       userName.ReadOnly = false; 
       password.ReadOnly = false; 
      }  
     } 

回答

1
private void AuthSelect_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      //listen if combobox selection is changed 
      if ((AuthSelect.SelectedIndex == 0) || (AuthSelect.SelectedIndex == -1)) 
      { 
       userName.ReadOnly = true; 
       password.ReadOnly = true; 
      } 
      else 
      { 
       userName.ReadOnly = false; 
       password.ReadOnly = false; 
      }  
     }