我需要使用两个单选按钮;一个是开,另一个是关。
当我们点击任何单选按钮时,应用程序会向我显示这两条消息!如何使其仅显示单击单选按钮的消息?
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");
}
答案 0 :(得分:2)
当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
转为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");
}
}