C# 箭头键和更改控件';s focus挂起应用程序

C# 箭头键和更改控件';s focus挂起应用程序,c#,winforms,keyboard,C#,Winforms,Keyboard,我有一个用户控件,它包含一个带有一组单选按钮的FlowLayoutPanel(自上而下的流)。该控件公开一个CheckedChanged事件,每当单选按钮的一个检查更改时触发该事件 我的表单包含usercontrol和文本框。我订阅了usercontrol的CheckedChanged事件,根据选中的radiobutton,我要么禁用文本框,要么将焦点放在文本框内 当更改radiobutton的检查状态时,所有这些都可以与mouseclick配合使用。但是,在使用箭头键时,此选项将无限期挂起。我

我有一个用户控件,它包含一个带有一组单选按钮的
FlowLayoutPanel
(自上而下的流)。该控件公开一个
CheckedChanged
事件,每当单选按钮的一个检查更改时触发该事件

我的表单包含usercontrol和文本框。我订阅了usercontrol的
CheckedChanged
事件,根据选中的radiobutton,我要么禁用文本框,要么将焦点放在文本框内

当更改radiobutton的检查状态时,所有这些都可以与mouseclick配合使用。但是,在使用箭头键时,此选项将无限期挂起。我不明白为什么会有不同

以下是复制我看到的行为的步骤:

  • 创建一个用户控件并放置一个
    FlowLayoutPanel
    控件并设置其
    FlowDirection=TopDown
    。然后将两个单选按钮添加到
    FlowLayoutPanel

  • 在usercontrol中提供事件处理程序

    public event EventHandler CheckedChanged
    {
        add { radioButton2.CheckedChanged += value; }
        remove { radioButton2.CheckedChanged -= value; }
    }
    
  • 创建windows窗体并删除上面的用户控件。添加一个文本框并将
    启用设置为False。订阅usercontrol的
    CheckedChanged
    事件,如下所示

    private void userControl11_CheckedChanged(object sender, EventArgs e)
    {
        textBox1.Select();
    }
    
  • 跑。请注意,如果您使用鼠标在单选按钮之间单击,则一切正常;但如果使用上/下箭头键,它将崩溃


  • 嗯,
    未初始化?还是我遗漏了什么?

    我打赌你的问题没有包含足够的信息来解决这个问题。您能否编写一个尽可能简单(代码行数最少)的测试用例来演示问题并将其添加到此处?解决方案:
    public event EventHandler CheckedChanged
    {
        add {
             radioButton2.CheckedChanged += value;
            }
        remove {
             radioButton2.CheckedChanged -= value;
            }
    }