0

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

当我们单击任何单选按钮时,应用程序会向我显示两条消息!如何让它只显示单击单选按钮的消息?

    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

4 回答 4

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");
    }
}
于 2013-04-27T02:12:18.103 回答
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);
        }
    }
于 2013-04-27T02:41:48.340 回答
1

那是因为当您选中一个时,另一个未选中并且您在CheckedChanged. 因此,检查更改并在两个控件上触发事件。

而是从 获取更多信息object senderSender将是触发此事件的 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");
        }            
    }
于 2013-04-27T02:12:20.057 回答
1

因为,无论是radioButtonturntrue还是false,它都会触发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");
      }
    }
于 2013-04-27T02:14:03.657 回答