我的应用程序中有 16 个单选按钮.. 我必须根据选择的变量设置一个变量..我已经为此生成了一些非常丑陋的代码..
private void Foo_CheckedChanged(object sender, EventArgs e)
{
convertSource = 1;
}
private void Bar_CheckedChanged(object sender, EventArgs e)
{
convertSource = 2;
}
private void Baz_RadioButton_CheckedChanged(object sender, EventArgs e)
{
convertSource = 3;
}
现在,我一直在考虑它,老实说,我认为可能有一种方法可以通过开关来实现。我只是无法在脑海中将其概念化。
如果有人能告诉我更有效的方法,我将不胜感激。 这么简单的事情却占用了五十到七十行代码,这真让我烦恼。
谢谢, 卡顿
最佳答案
就我个人而言,如果有超过 2 或 3 个选择,我讨厌单选按钮 - ComboBox
是从多个选项中选择一个选项的更好控件。
但是,快速解决问题的方法是将每个单选按钮的 convertSource 值放入该控件的 Tag
属性中(在设计器中执行此操作)。将此方法添加到您的表单中:
private void rb_CheckedChanged(object sender, EventArgs e)
{
convertSource = (int)((RadioButton)sender).Tag;
}
在表单的加载事件中(假设这些单选按钮都在一个分组框中),像这样分配处理程序:
foreach (RadioButton rb in groupBox1.Controls)
{
rb.CheckedChanged += rb_CheckedChange;
}
确保删除所有手动添加的事件处理程序(如 Foo_CheckedChanged
)。
关于windows - 有没有更有效的方法来设置 RadioButton 的 CheckChanged 事件的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2542364/