我在C#(.Net 4.5)中使用Virtual Studio Community。 我有一个简单的表单,其中包含一个按钮和一个webBrowser控件。 当我点击按钮时,我将webBrowser导航到google.com。 然后,当页面加载时,我尝试覆盖linkClick事件,就像我在之前在此站点(stackoverflow)上阅读的解决方案中看到的那样。 但是,当我点击加载页面上的链接时,它表示导航已取消,但无论如何都会导航。 我做错了什么?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.google.com/");
}
private bool bCancel = false;
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
for (int i = 0; i < webBrowser1.Document.Links.Count; i++)
{
webBrowser1.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 webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (bCancel == true)
{
e.Cancel = true;
bCancel = false;
}
}
}
答案 0 :(得分:0)
您需要将Form1
事件绑定到您编写的处理程序;让处理程序的名称与控件下划线事件名称相匹配是不够的。
所以你可以在public Form1()
{
InitializeComponent();
webBrowser1.Navigating += new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
}
的构造函数中执行此操作:
Load
更好的是,添加{{1}}事件并在那里执行相同操作。查看主题的official documentation。