在C#中,如何判断窗体中某个控件有没有绑定某个事件? PS:比如如何判断名称为btnSave的Button控件有没有绑定单击事件

拥抱开源 2014-08-01 02:02:14
如题
PS:比如如何判断名称为btnSave的Button控件有没有绑定单击事件
...全文
570 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
phommy 2014-08-01
  • 打赏
  • 举报
回复

        void button1_Click(object sender, EventArgs e)
        {
            var del = getDelegateByControl(button1, "EventClick");
            if (del != null)
            {
                MessageBox.Show(del.ToString());
            }
        }

        /// <summary>
        /// 得到控件的事件绑定的委托
        /// </summary>
        /// <param name="Control"></param>
        /// <param name="EventName"></param>
        /// <returns></returns>
        Delegate getDelegateByControl(Control Control, string EventName)
        {
            var events =
                typeof(Control).GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(Control)
                    as EventHandlerList;

            var key = typeof(Control).GetField(EventName, BindingFlags.Static | BindingFlags.NonPublic);
            if (key == null)
            {
                throw new ArgumentException("提供的事件名不存在。", "EventName");
            }

            return events[key.GetValue(null)];
        }
拥抱开源 2014-08-01
  • 打赏
  • 举报
回复
自己给自己顶一下 @ bdmh @caozhy

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧