由于 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/