我有一个usercontrol,其中包含FlowLayoutPanel
(自上而下流)和一堆radiobuttons。该控件公开了CheckedChanged
事件,只要其中一个单选按钮的检查发生更改,就会触发该事件。
我的表单包含usercontrol和一个文本框。我订阅了usercontrol的CheckedChanged
事件,并根据检查的radiobutton,我要么禁用文本框,要么将焦点放在文本框中。
在更改radiobutton的检查状态时,使用鼠标点击这一切都可以正常工作。但是,使用箭头键时,这将无限期挂起。我不明白为什么会有这种差异。
以下是重现我所看到的行为的步骤:
创建一个usercontrol并删除FlowLayoutPanel
控件并设置其FlowDirection = TopDown
。然后将两个radiobuttons添加到FlowLayoutPanel
。
在usercontrol中提供事件处理程序
public event EventHandler CheckedChanged
{
add { radioButton2.CheckedChanged += value; }
remove { radioButton2.CheckedChanged -= value; }
}
创建一个Windows窗体并删除上面的用户控件。添加文本框并将Enabled
设置为False。订阅usercontrol的CheckedChanged
事件,如下所示
private void userControl11_CheckedChanged(object sender, EventArgs e)
{
textBox1.Select();
}
运行。请注意,如果您使用鼠标在单选按钮之间单击,则可以正常工作;但如果使用向上/向下箭头键,它会崩溃。
答案 0 :(得分:0)
public event EventHandler CheckedChanged
{
add {
radioButton2.CheckedChanged += value;
}
remove {
radioButton2.CheckedChanged -= value;
}
}
嗯,value
未初始化?或者我错过了什么?