2013-04-27 69 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); 
     } 
    } 
相关问题