必要なコードは次のとおりです。
If WB.ContainsFocus Then
MsgBox("We have focus, disappearing...")
WB.Document.Body.RemoveFocus()
End If
ここで問題となるのは、そのコードをいつ実行するかです。WebBrowser1_GotFocusイベントに入れる場合は、オンとオフを切り替える必要があります。ユーザーがWBコントロールを操作している場合はコードをオフにし、そうでない場合や、前述の問題が発生すると予想される場合は、コードをオンに戻します。
もちろん、ボディからフォーカスを外した後、特定のコントロール/タブ/パネルなどにフォーカスを確実に合わせるために、別の行を追加することもできます。また、ここにあなたを助けるかもしれない答えを持っている他の3つのSO質問があります、しかしこれらはおそらく質問があなたのものと同一ではないが十分に類似しているという事実のために私が提供した方向とは異なる方向にあなたを連れて行きます役に立つこと(優先順にリストされていない)。
WebBrowserコントロールがフォーカスを盗むのを防ぎますか?
Webブラウザがフォーカスを盗む
C#アプリケーションでのWebBrowserコントロールのフォーカス
更新:.Body.RemoveFocus()の代わりに、次のように追加したかっただけです。
WB.Document.Body.Parent.RemoveFocus()
.Documentオブジェクトにはインテリセンスに明示的な.RemoveFocusメソッドがなかったので、私はこれを好みます。VS2012RCで取得しました。これはおそらくHTMLタグ(.Documentオブジェクトではなく)を参照しています。タグはhtml
タグの唯一の親であるため、body
意味があり、オブジェクトの下のインテリセンスで直接使用できる「HTML」オブジェクトはありません。他の方法で取得できるので、この方法の方が便利です。
乾杯、そして何かについてもっと情報が必要な場合は私に知らせてください。