我有一个非常简单的问题,但我无法让它工作。每次我在表单中单击时,我都希望显示MessageBox
。我不知道如何在整个表单上捕获它,所以我开始尝试捕获我的WebBrowser1
内的左键单击。但是,尝试触发事件时没有任何事情发生。
我将行动宣布为WebBrowser1_Mousedown
。
private void WebBrowser1_Mousedown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
MessageBox.Show("test");
}
}
我做错了什么?
我的相关XAML如下:
<Window x:Class="IndianBrowser.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="488.806" Width="807.089" MouseDown="Window_MouseDown">
现在尝试使用webbrowser:
<WebBrowser x:Name="WebBrowser1" HorizontalAlignment="Stretch" Height="auto" Margin="0,85,0,0" VerticalAlignment="Stretch" Width="auto" MouseDown="WebBrowser1_Mousedown"/>
答案 0 :(得分:1)
如果查看WebBrowser
类的MSDN文档,您将看到不支持鼠标事件。您可以做的是订阅HtmlDocument.MouseDown
事件。
<强>更新强>
以下是演示如何在WPF中执行此操作的小代码段,注意您必须添加对Microsoft.mshtml
程序集的引用:
public MainWindow()
{
InitializeComponent();
this.webBrowser1.Navigated += webBrowser1_Navigated;
this.webBrowser1.Source = new Uri("your url");
}
void webBrowser1_Navigated(object sender, NavigationEventArgs e)
{
HTMLDocumentClass document = this.webBrowser1.Document as HTMLDocumentClass;
document.HTMLDocumentEvents2_Event_onclick += document_HTMLDocumentEvents2_Event_onclick;
}
bool document_HTMLDocumentEvents2_Event_onclick(IHTMLEventObj pEvtObj)
{
// here you can check if the clicked element is your form
// if (pEvtObj.fromElement.id == "some id")
MessageBox.Show("test");
return true;
}