2012-07-10 94 views
5

我想在用戶右鍵單擊我的Web瀏覽器控件時選擇全部。捕獲Web瀏覽器控件的鼠標右鍵單擊事件

我正在開發一個勝利形式的應用程序,並使用Web瀏覽器來顯示我的信息,因爲我可以使用HTML來設計單詞的樣式。

右鍵單擊上下文菜單不適用於我。它的選項都與我的應用程序無關。

但是選擇之後的上下文菜單已經完成了,我想保留,複製,剪切,粘貼選項。

我已經可以選擇所有:

getCurrentBrowser().Document.ExecCommand("SelectAll", true, null); 

我只是想做到這一點在網絡瀏覽器的右鍵點擊事件?

+0

的可能重複[jQuery的/ JS防止在瀏覽器中右鍵菜單(http://stackoverflow.com/questions/4920221/jquery-js-prevent-right-click-menu-in-browsers) – Piskvor 2012-07-10 07:06:14

+0

@Piskvor這是一個勝利形式的應用程序,並在C#中完成銳利,沒有涉及Jquery/JS也不想阻止右鍵單擊菜單,所以這不是一個可能的重複! – Pomster 2012-07-10 07:21:04

+0

那麼,現在你說沒有webbrowser控件?有趣... – Piskvor 2012-07-10 09:26:44

回答

2

這工作:)

當上下文菜單中選擇顯示所有運行的推出,我想通過ContextMenu,用複製,粘貼,剪切等。

private void webCompareSQL_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      if (webCompareSQL.Document != null) 
      { 
       webCompareSQL.Document.ContextMenuShowing += DocMouseClick; 
      } 
     } 
     void DocMouseClick(object sender, HtmlElementEventArgs e) 
     { 
      webCompareSQL.Document.ExecCommand("SelectAll", true, null); 
     } 
+0

它不完全捕獲右鍵單擊事件,但contextMenuShowing將始終顯示單擊Web瀏覽器時。所以它是一個很好的解決方法。 – Pomster 2012-07-10 07:19:26

+0

如果Document爲空?對於PDF瀏覽器, 文檔始終爲空。那麼您將如何創建點擊事件? – 2017-08-17 10:06:50

4

This文章顯示瞭如何用自己的替換Web瀏覽器的上下文菜單。如果您使用的WinForms,而不是WPF

document.oncontextmenu=new Function("return false") 

,您可以設置IsWebBrowserContextMenuEnabled

另外,如果你在Web瀏覽器中執行下面的JavaScript,它會禁用默認的右鍵快捷菜單設爲false以防止IE上下文菜單,在這種情況下,它將使用您在WebBrowser控件上提供的ContextMenu。

WPF沒有在Web瀏覽器中公開的相同屬性,所以它可能不那麼容易。在這種情況下,您可能不得不使用WindowsFormsHost來承載WPF中的WinForms Web瀏覽器。

+0

+ 1。感謝您的回答:),我確實設法找到一個真棒工作:) – Pomster 2012-07-10 07:23:30

5

手柄MouseDown事件:

webBrowser.Document.MouseDown += new HtmlElementEventHandler(Document_MouseDown); 

,並確保用戶按下右按鈕,然後選擇所有:

void Document_MouseDown(object sender, HtmlElementEventArgs e) 
{ 
    if(e.MouseButtonsPressed == MouseButtons.Right) 
    { 
     webBrowser.Document.ExecCommand("SelectAll", true, null); 
    } 
} 
+1

+1謝謝您認爲這是正確的方式來解決問題。 – Pomster 2012-07-10 07:34:25

0

你需要肯定的是,該WebBrowser.Document屬性已經加載。然後你可以註冊鼠標事件。

 
`browser.DocumentCompleted += (s, e) => { 
          browser.Document.MouseMove += (sM, eM) +=> { 
                  Debug.WriteLine(eM.ClientMousePosition.X); 
                     }; 
             }; 
` 
相關問題