c#判断某个控件是否已经注册某事件

本文判断的是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;
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值