2013-04-27 63 views
0

我需要使用兩個單選按鈕;一個接通,另一個斷開。兩個單選按鈕在選中時有不同的信息

當我們點擊任何單選按鈕時,應用程序會向我顯示兩條消息!如何讓它僅顯示單擊單選按鈕的消息?

private void rB_OFF_CheckedChanged(object sender,EventArgs e) 
    { 
    MessageBox.Show("You clicked OFF"); 
    } 

    private void rB_ON_CheckedChanged(object sender,EventArgs e) 
    { 
    MessageBox.Show("You clicked ON"); 
    } 

回答

1

,因爲,無論是radioButton變成truefalse,它只是觸發checkedChanged事件,所以你需要做到這一點。

private void rB_OFF_CheckedChanged(object sender,EventArgs e) 
    { 
     if (rB_OFF.Checked == true) 
     { 
     MessageBox.Show("You clicked OFF"); 
     } 
    } 

    private void rB_ON_CheckedChanged(object sender,EventArgs e) 
    { 
     if (rB_ON.Checked == true) 
     { 
     MessageBox.Show("You clicked ON"); 
     } 
    } 
+1

謝謝,我測試了你的代碼並確定。 – 2013-04-27 02:28:41

2

CheckChanged事件

時發生經過屬性的值更改。

這意味着單選按鈕要麼從檢查 - >未檢查,反之亦然。在您的處理程序中,您需要檢查sender是否爲Checked

private void rB_ON_CheckedChanged(object sender,EventArgs e) 
{ 
    var rb = (RadioButton)sender; 

    if (rb.Checked) { 
     MessageBox.Show("You clicked ON"); 
    } 
} 
+0

謝謝

更多的細節,這是因爲單選按鈕是布爾好嗎?在相同的範圍內,只能檢查一個;我怎樣才能創建一個條件,只有點擊按鈕才能顯示消息?謝謝,Ocaccy。 – 2013-04-27 02:18:05

+0

不,它是一個'RadioButton'。它有一個'bool Checked'屬性。 – 2013-04-27 02:19:39

+0

謝謝,我也測試了你的代碼,好的。 – 2013-04-27 02:31:24

1

這是因爲,當您檢查之一,其他被氾濫,你有CheckedChanged事件處理程序。因此檢查更改並在兩個控件上觸發事件。

反而從object sender獲取更多信息。 Sender將成爲此事件被觸發的RadioButton。將其轉換爲RadioButton並使用其屬性Checked

private void rB_OFF_CheckedChanged(object sender, EventArgs e) 
    { 
     RadioButton rb = (RadioButton)sender; 

     if (rb.Checked) 
     { 
      MessageBox.Show("You clicked OFF"); 
     }    
    } 

    private void rB_ON_CheckedChanged(object sender, EventArgs e) 
    { 
     RadioButton rb = (RadioButton)sender; 

     if (rb.Checked) 
     { 
      MessageBox.Show("You clicked ON"); 
     }    
    } 
+0

謝謝,我也測試了你的代碼,沒問題。 – 2013-04-27 02:33:05

2

這是很好的,一般一個事件對所有單選按鈕 同一事件的所有單選按鈕這裏MSDN

this.radioButton2.CheckedChanged += new EventHandler(radioButton_CheckedChanged); 
    this.radioButton1.CheckedChanged += new EventHandler(radioButton_CheckedChanged); 


    void radioButton_CheckedChanged(object sender, EventArgs e) 
    { 
     RadioButton rb = sender as RadioButton; 

     if (rb == null) 
     { 
      MessageBox.Show("Sender is not a RadioButton"); 
      return; 
     } 

     // Ensure that the RadioButton.Checked property 
     // changed to true. 
     if (rb.Checked) 
     { 
      // Keep track of the selected RadioButton by saving a reference 
      // to it. 
      selectedrb = rb; 
      MessageBox.Show(selectedrb.Text); 
     } 
    } 
相關問題