如何在左键单击时显示消息框

时间:2014-01-16 08:25:17

标签: c# wpf

我有一个非常简单的问题,但我无法让它工作。每次我在表单中单击时,我都希望显示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"/>

1 个答案:

答案 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;
}