C# 以编程方式聚焦前景窗口的主窗体

C# 以编程方式聚焦前景窗口的主窗体,c#,winforms,focus,C#,Winforms,Focus,编辑: 是否可以向外部程序(窗口)发送命令,将焦点从控制框(红色)移到程序内容(黄色) 我认为您应该使用windows消息。当用户打开窗口菜单时,窗口菜单获得键盘焦点是正常的,因此用户可以通过键盘导航菜单。如果菜单关闭,则当您打开菜单时,焦点将自动返回到具有焦点的控件(否则,假设您不会弄乱焦点)。我想我不明白你的问题,也许重新措辞你的问题,让你的问题更容易理解。没有多大意义。主窗体从不喜欢获得焦点,窗体上的控件可以获得焦点。这可能会被故意弄乱,但当用户看不到哪个窗口有焦点时,这只会让用户感到困惑

编辑:
是否可以向外部程序(窗口)发送命令,将焦点从控制框(红色)移到程序内容(黄色)


我认为您应该使用windows消息。

当用户打开窗口菜单时,窗口菜单获得键盘焦点是正常的,因此用户可以通过键盘导航菜单。如果菜单关闭,则当您打开菜单时,焦点将自动返回到具有焦点的控件(否则,假设您不会弄乱焦点)。我想我不明白你的问题,也许重新措辞你的问题,让你的问题更容易理解。没有多大意义。主窗体从不喜欢获得焦点,窗体上的控件可以获得焦点。这可能会被故意弄乱,但当用户看不到哪个窗口有焦点时,这只会让用户感到困惑。让用户自己操作他的机器,你不需要帮助。如果这是你的问题,那么你的软件中就有一些古怪的东西。无论您在代码中做了什么,或者使用了什么(第三方)控件,您都必须缩小问题的范围,并在问题中更加具体和信息丰富。好吧,你可以问100个人,每个人都可以对你的代码中发生了什么产生100种不同的猜测…问题不在代码中,这在我的Windows7上的每个程序中都会发生。。。尝试在您的Windows上模拟它:ALT+SPACE->1xECS->ARROW DOWN->菜单再次打开(例如,如果您在浏览器中,则不会滚动。这就是问题所在,我希望在按下ESC后网页获得焦点)。@Mgulan,这也是Windows中的正常行为。第一次按ESC键关闭下拉列表,但您仍在菜单中(再次按ESC键可离开该菜单)。这是几十年来的正常行为,任何用户都知道这一点。不要试图破坏Windows中已有的用户体验,你的软件只会惹恼它的用户。(抱歉,如果我没有注意到,因为你特别想按ESC一次)如果我能得到“身体”(黄色)手柄,这可能会起作用。。但是,我怎么知道窗户“主体”的把手是什么?