本文判断的是webBrowser的绑定事件
分别用两个按钮来给浏览器注册事件。
using System;
using System.Windows.Forms;
using System.Reflection;
namespace 添加删除控件事件
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click+=new EventHandler(button1_Click);
button2.Click+=new EventHandler(button2_Click);
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Tag = "button1";
string url = "http://www.baidu.com";
webBrowser1.Navigate(url);
if (IshasEvent(this, webBrowser1, "webBrowser1_DocumentCompleted"))
{
webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
if (IshasEvent(this, webBrowser1, "button2_DocumentCompleted"))
{
webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(button2_DocumentCompleted);
}
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
private void button2_Click(object sender, EventArgs e)
{
webBrowser1.Tag = "button2";
string url = "http://www.163.com";
webBrowser1.Navigate(url);
if (IshasEvent(this, webBrowser1, "webBrowser1_DocumentCompleted"))
{
webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
if (IshasEvent(this, webBrowser1, "button2_DocumentCompleted"))
{
webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(button2_DocumentCompleted);
}
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(button2_DocumentCompleted);
}
private void webBrowser1_DocumentCompleted(object sender,WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState != WebBrowserReadyState.Complete) return;
if (e.Url.ToString() != webBrowser1.Url.ToString()) return;
webBrowser1.Tag = "button1触发";
}
private void button2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState != WebBrowserReadyState.Complete) return;
if (e.Url.ToString() != webBrowser1.Url.ToString()) return;
webBrowser1.Tag = "button2触发";
}
/// <summary>
/// 判断浏览器上是否有某个事件
/// </summary>
/// <param name="browser"></param>
/// <param name="eventName"></param>
/// <returns></returns>
private bool IshasEvent(Control frm,WebBrowser b,string eventName)
{
Assembly a = Assembly.GetAssembly(frm.GetType());
Type t = a.GetType(frm.GetType().FullName, true);
System.Reflection.MethodInfo[] methods = t.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance);
foreach (MethodInfo m in methods)
{
if (m.Name.Equals(eventName))
{
return true;
}
}
return false;
}
}
}