我在一个容器中有几个单选按钮。对于每个事件,我都有一个CheckedChanged
事件,所以我有一个这样的代码
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
if ((sender as RadioButton).Checked)
// do stuff...
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
if ((sender as RadioButton).Checked)
// do stuff...
}
private void radioButton3_CheckedChanged(object sender, EventArgs e)
{
if ((sender as RadioButton).Checked)
// do stuff...
}
// ... and so on...
然后,我必须为当前选中的CheckedChanged
触发radioButton
事件。要获得radioButton
,我使用了以下代码:
RadioButton checkedButton = container.Controls.OfType<RadioButton>()
.FirstOrDefault(r => r.Checked);
现在如何为CheckedChanged
触发checkedButton
事件?
编辑:我正在使用WinForms。我的单选按钮在tabPage
中。当我打开tabPage
时,我需要知道什么是当前检查的radioButton
并触发相应的checkedChanged
事件。这是因为当我选择另一个tabPage
时,我还要执行其他操作,然后返回到包含单选按钮的tabPage
,我需要恢复以前的状态。
答案 0 :(得分:1)
更改Checked
属性的值会触发该事件:
checkedButton .Checked = !checkedButton .Checked;
您还可以显式调用事件处理程序,例如:
RadioButton checkedButton = container.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked);
switch (checkedButton.Name)
{
case "radioButton1":
radioButton1_CheckedChanged(this, EventArgs.Empty);
break;
case "radioButton2":
radioButton2_CheckedChanged(this, EventArgs.Empty);
break;
case "radioButton3":
radioButton3_CheckedChanged(this, EventArgs.Empty);
break;
}
根据您的要求,您当然可以考虑为所有RadioButtons
使用相同的事件处理程序。