选中时带有不同消息的两个单选按钮

时间:2013-04-27 02:10:21

标签: c# radio-button messagebox

我需要使用两个单选按钮;一个是开,另一个是关。

当我们点击任何单选按钮时,应用程序会向我显示这两条消息!如何使其仅显示单击单选按钮的消息?

    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");
    }

4 个答案:

答案 0 :(得分:2)

CheckChanged事件

  

当Checked属性的值发生更改时发生。

这意味着单选按钮要么从选中 - >>未检查,反之亦然。在您的处理程序中,您需要检查sender是否为Checked

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

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

答案 1 :(得分: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);
        }
    }

答案 2 :(得分: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");
        }            
    }

答案 3 :(得分: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");
      }
    }