【发布时间】:2010-10-29 13:27:41
【问题描述】:
我有一个用户控件,其中包含一个带有一堆单选按钮的FlowLayoutPanel(自上而下的流程)。该控件公开了一个CheckedChanged 事件,只要其中一个单选按钮的检查发生更改,就会触发该事件。
我的表单包含用户控件和一个文本框。我订阅了用户控件的CheckedChanged 事件,根据选中的单选按钮,我要么禁用文本框,要么将焦点放在文本框内。
当更改单选按钮的检查状态时,所有这些都可以通过鼠标单击正常工作。但是,当使用箭头键时,这将无限期挂起。我不明白为什么会有差异。
以下是重现我看到的行为的步骤:
创建一个用户控件并删除一个
FlowLayoutPanel控件并设置它的FlowDirection = TopDown。然后将两个单选按钮添加到FlowLayoutPanel。-
在用户控件中提供事件处理程序
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(); } 运行。请注意,如果您使用鼠标在单选按钮之间单击,则一切正常;但如果你使用向上/向下箭头键,它会崩溃。
【问题讨论】:
-
我打赌你的问题没有包含足够的信息来解决这个问题。你能设计出最简单(代码行最少)的测试用例来演示问题并将其添加到这里吗?