重写web浏览器点击事件 [英] Overriding the webBrowser click event

查看:254
本文介绍了重写web浏览器点击事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要有关,当用户点击一个WebBrowser控件中的超链接会发生什么情况的一些信息。我的想法是,它调用 .Navigate()方法,但我不知道。

I need some information about what happens when a user clicks a hyperlink in a webBrowser control. My thinking is that it calls the .Navigate() method, but I am not sure.

我创建周围的导航方法包装的包装方法。我想要做的是,当用户点击一个链接或按钮或watever,我的方法被调用,而不是 .Navigate()方法。

I have created a wrapper method that wraps around the navigate method. What I want to do is that when a user clicks a link, or a button or watever, my method is called instead of the .Navigate() method.

什么我需要ovverride实现这一目标?

What do I need to ovverride to achieve this?

感谢

编辑:好像有一些很难理解我的问题,让我尝试refrase:

It seems there is some trouble understanding my question, let me try to refrase:

我创建了web浏览器,从继承我自己的WebBrowser控件。在我的控制,还有我用实际调用导航()方法之前,导航,做一些步骤的方法。

I have created my own webBrowser control that inherits from WebBrowser. In my control, there is a method I use to navigate which does some steps before actually calling the navigate() method.

现在调用此方法从我的代码很容易,他们只是我的方法,而不是.Navigate。但我想的是,当用户点击一个页面上的链接我的方法运行,而不是.Navigate。

Now calling this method from my code is easy, just call my method instead of .Navigate. But what I want is that when a user clicks a link on a page my method runs instead of .Navigate.

推荐答案

没有必要覆盖,只需将一个事件处理程序的WebBrowser.DocumentCompleted活动页面上的每一个环节。

No need to override, just attach an event handler to every link on the page on the WebBrowser.DocumentCompleted event.

private bool bCancel = false;

private void webBrowser_DocumentCompleted(object sender,
                                 WebBrowserDocumentCompletedEventArgs e)
{
  int i;
  for (i = 0; i < webBrowser.Document.Links.Count; i++)
  {
     webBrowser.Document.Links[i].Click += new    
                            HtmlElementEventHandler(this.LinkClick);
  }
}
private void LinkClick(object sender, System.EventArgs e)
{
  bCancel = true;
  MessageBox.Show("Link Was Clicked Navigation was Cancelled");
}
private void webBrowser_Navingating(object sender, 
                                WebBrowserNavigatingEventArgs e )
{
  if (bCancel == true)
  {
     e.Cancel=true;
     bCancel = false;
  }
}



希望它帮助!

Hope it helps!

编辑:

如果您想了解有关被点击只需修改LinkClick链接更多信息事件处理程序是这样的:

If you would like to find more info about the link that was clicked simply modify the LinkClick event handler with something like this:

private void LinkClick(object sender, System.EventArgs e)
{
    HtmlElement element = ((HtmlElement)sender);
    string id = element.Id;
    string href = element.GetAttribute("href");

    bCancel = true;
    MessageBox.Show("Link Was Clicked Navigation was Cancelled");        
}

这篇关于重写web浏览器点击事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆