当Web浏览器处于焦点时CTRL TAB

时间:2012-10-01 05:08:00

标签: webbrowser-control ctrl

我有一个带tabcontrol的Windows应用程序。 tabcontrol的一个选项卡有一个webbrowser控件。现在我面临的问题是当焦点位于webbrowser控件内时,正常的 Ctrl + Tab 功能tabcontrol不工作。我希望 Ctrl + Tab 更改tabcontrol的选定选项卡,即使焦点位于所选选项卡中的webbrowser控件内。如何实现?

我已经尝试重写ProcessCmdKey。但是当焦点在webbrowser控件内时它不会被击中。

我也试过了registerhotkey方法,它可以工作,但它锁定了我的应用程序中的 Ctrl + Tab 热键。当应用程序运行时,系统不响应任何其他 Ctrl + Tab 在我的应用程序外部按下,这是registerhotkey的预期行为。

1 个答案:

答案 0 :(得分:0)

以下是您需要的代码:

    If WB.ContainsFocus Then
        MsgBox("We have focus, disappearing...")
        WB.Document.Body.RemoveFocus()
    End If

现在,问题是,何时运行该代码。如果将其放入WebBrowser1_GotFocus事件中,则需要打开和关闭它。如果用户正在与WB Control进行交互,请关闭代码,如果不是,请将其重新打开,以及当您遇到问题时将其重新打开。

当然,您可以添加另一行以确保在从主体移除焦点后特定控件/选项卡/面板等获得焦点。此外,这里还有其他3个问题,这些问题的答案可能会对你有所帮助,但是这些问题会引导你找到与我提供的方向不同的方向,这可能是因为这些问题与你的问题不一样,但是足够相似有用(不按优先顺序列出)。

Prevent WebBrowser control from stealing focus?

Webbrowser steals focus

Focusing WebBrowser control in a C# application

更新: 我只想添加,而不是.Body.RemoveFocus()你可以这样做:

WB.Document.Body.Parent.RemoveFocus()

我更喜欢,因为.Document对象在intellisense上没有显式的.RemoveFocus方法,我在VS2012 RC中得到了gettign。这可能是指HTML标记(而不是.Document对象),因为html标记是body标记的唯一父标记,所以它是有意义的,并且没有“HTML”对象直接在对象下的intellisense中可用,因为你可以通过其他方式获得它,所以用这种方式更方便。

干杯,如果您需要更多信息,请告诉我。