c# - WinForm - 不允许使用单选按钮选项卡

标签 c# winforms

由于 TabStop 不适用于 RadioButtons(请参阅链接的问题),我怎样才能防止(WinForm)RadioButton 被选项卡插入,同时还允许用户单击 RadioButton,而无需选项卡焦点跳转到其他地方。

我已阅读 this所以我认为以下方法可行:

        rbFMV.Enter += (s, e) => focusFirstWorkflowButton();
        rbFMV.MouseUp += (s, e) => rbFMV.Focus();

但事实并非如此。当我单击 RB 时,焦点会跳开,并且不会在鼠标松开时返回。

有什么肮脏的解决方法吗?

最佳答案

尝试这样的事情:

在表单的构造函数中将单选按钮的 TabStop 属性设置为“false”。然后将以下事件处理程序附加到单选按钮的 CheckedChanged 事件。

public partial class Form1 : Form
{        
    public Form1()
    {
        InitializeComponent();
        radioButton1.TabStop = false;
        radioButton2.TabStop = false;
    }

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        radioButton1.TabStop = false;
        radioButton2.TabStop = false;
    }

    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        radioButton1.TabStop = false;
        radioButton2.TabStop = false;
    }

}

您也可以使用 lambda 附加这些事件处理程序,如您在问题中所示。

但这里重要的一点是,每当选中/取消选中单选按钮时,它的 tabstop 属性也会同时修改。因此,每次该事件发生时,您都需要将其设置为 false。

关于c# - WinForm - 不允许使用单选按钮选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6364245/

相关文章:

c# - 关于 Environment.SpecialFolder

c# - 当用户单击标题栏中的十字时,如何显示 MessageBox 提示

c# - 如何防止WebView2(Edge based)打开新窗口

javascript - Monaco Editor 中的选项卡

c# MailMessage 自定义 header - 使用 System.Net.Mail;

c# - 如何使用 WHERE 条件显示记录

c# - 通过有向图查找路径的递归 lambda 表达式?

c++ - cvLoadImage 函数中的内存泄漏

c# - 在运行时移动控制

c# - 如何筛选使用 Visual Studio 创建的 C# Winform datagridview