2017-01-21 11 views
0

Axwebbrowserを使用して、VB.NETアプリケーションにHTMLページを表示しています。コンテキストメニューを無効にする方法を知りたいですか?AxWebbrowserコンテキストメニューを無効にするVB.NET

AxWebbrowserは元のWebbrowserコンポーネントよりも多く使用しています。これは、リンクが新しいタブなどで開いているときにポップアップURLを取得するNewWindows 2イベントを処理するためです。

だからあなたの答えのためのWebbrowser1.ContextMenuEnabled = Falseの

感謝を使用することはできません

+0

私はこの問題をウェブブラウザの拡張版で修正しました!ご協力いただきありがとうございます ! –

答えて

1

簡単な方法は、トラップにアプリケーションレベルでWM_RBUTTONDOWNとWM_RBUTTONDBLCLKメッセージです。 Application.AddMessageFilter(instance of IMessageFilter)ステートメントを使用して、アプリケーションにメッセージフィルターを追加できます。以下の例では、ImessageFilter interferaceはAXWebrowserコントロールを含むフォームで実装されています。フィルターはアプリケーション全体に適用されるため、フォームのアクティブ化/非アクティブ化時に追加/削除されます。

Public Class Form1 
    Implements IMessageFilter 

    Public Function PreFilterMessage(ByRef m As Message) As Boolean Implements IMessageFilter.PreFilterMessage 
     Const WM_RBUTTONDOWN As Int32 = &H204 
     Const WM_RBUTTONDBLCLK As Int32 = &H206 
     ' check that the message is WM_RBUTTONDOWN Or WM_RBUTTONDBLCLK 
     ' verify AxWebBrowser1 is not null 
     ' verify the target is AxWebBrowser1 
     Return (m.Msg = WM_RBUTTONDOWN OrElse m.Msg = WM_RBUTTONDBLCLK) AndAlso (AxWebBrowser1 IsNot Nothing) AndAlso (AxWebBrowser1 Is Control.FromChildHandle(m.HWnd)) 
    End Function 

    Protected Overrides Sub OnActivated(e As EventArgs) 
     MyBase.OnActivated(e) 
     ' Filter is application wide, activate filter with form 
     Application.AddMessageFilter(Me) 
    End Sub 

    Protected Overrides Sub OnDeactivate(e As EventArgs) 
     MyBase.OnDeactivate(e) 
     ' Filter is application wide, remove when form not active 
     Application.RemoveMessageFilter(Me) 
    End Sub 

End Class 
+1

'Const As Int32 =&H204'にタイプミスがあるようです。 'Select Case True'ブロックで分割された場合、返り値が読みやすくなるかもしれませんが、それは自分のスタイルの好みにすぎません。 – MrGadget

+0

@MrGadget、それを指摘していただきありがとうございます。私は説明を構成している間、WM_RBUTTONDOWNのコピーの代わりにカットをしているにちがいありません。 – TnTinMn

関連する問題