0

2 つのラジオ ボタンを使用する必要があります。1 つはオンで、もう 1 つはオフです。

ラジオ ボタンをクリックすると、アプリケーションは両方のメッセージを表示します。クリックされたラジオボタンのメッセージのみを表示するにはどうすればよいですか?

    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

一般に、すべてのラジオ ボタンに対して 1 つのイベントを使用することをお勧めします。すべてのラジオ ボタンに対して同じイベントを使用します。

詳細はこちら 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 に答える
2

CheckChangedイベント_

Checked プロパティの値が変化すると発生します。

これは、ラジオ ボタンがオンからオフ、またはその逆になったことを意味します。senderハンドラーで、が isかどうかを確認する必要があります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 に答える
1

これは、一方をオンにすると、もう一方がオフになり、イベント ハンドラーが on になるため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

radioButtonターンtrueまたはのいずれかがイベントを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 に答える