windows - 有没有更有效的方法来设置 RadioButton 的 CheckChanged 事件的变量?

标签 windows events forms radio-button

我的应用程序中有 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/

相关文章:

visual-studio - 如何在 Visual Studio 中检测右键单击事件?

ios - 如何使用 Google Calendar API iOS Swift 创建事件

C# 事件处理程序 : when are the subscribers invoked?

c++ - 为什么 visual studio 2015 只允许我使用 1 个核心的 50%?

c++ - Win32 - 获取应用程序的主窗口句柄

windows - 创建启动文件夹 - Windows

javascript - 停止 jQuery 重复

php - 为什么我的提交默认为 GET?我清楚地将操作标记为 "post",但我不确定为什么

ruby-on-rails - 使用 div 作为提交按钮

windows - 用于监视某个程序的 CPU 使用率并对其使用react的批处理脚本