自己给自己顶一下@ bdmh 
@caozhy

解决方案 »

  1.   


            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)];
            }