|
@@ -1,5 +1,6 @@
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.ComponentModel;
|
|
|
using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Reflection;
|
|
@@ -30,11 +31,35 @@ namespace LRH
|
|
|
{
|
|
|
InitializeComponent();
|
|
|
this.Loaded += MainWindow_Loaded;
|
|
|
+ }/// <summary>
|
|
|
+ /// 删除指定控件的指定事件
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="control"></param>
|
|
|
+ /// <param name="eventname"></param>
|
|
|
+ public void ClearEvent(System.Windows.Forms.Control control, string eventname)
|
|
|
+ {
|
|
|
+ if (control == null) return;
|
|
|
+ if (string.IsNullOrEmpty(eventname)) return;
|
|
|
+
|
|
|
+ BindingFlags mPropertyFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic;
|
|
|
+ BindingFlags mFieldFlags = BindingFlags.Static | BindingFlags.NonPublic;
|
|
|
+ Type controlType = typeof(System.Windows.Forms.Control);
|
|
|
+ PropertyInfo propertyInfo = controlType.GetProperty("Events", mPropertyFlags);
|
|
|
+ EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(control, null);
|
|
|
+ FieldInfo fieldInfo = (typeof(System.Windows.Forms.Control)).GetField("Event" + eventname, mFieldFlags);
|
|
|
+ Delegate d = eventHandlerList[fieldInfo.GetValue(control)];
|
|
|
+
|
|
|
+ if (d == null) return;
|
|
|
+ EventInfo eventInfo = controlType.GetEvent(eventname);
|
|
|
+
|
|
|
+ foreach (Delegate dx in d.GetInvocationList())
|
|
|
+ eventInfo.RemoveEventHandler(control, dx);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
- Button_Click_1(sender,e);
|
|
|
+ Button_Click(sender,e);
|
|
|
}
|
|
|
|
|
|
private void Button_Click(object sender, RoutedEventArgs e)
|