2012-07-10 133 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); 
                     }; 
             }; 
` 
相关问题