如何确定是否引发了一个事件

时间:2011-05-02 13:19:21

标签: c# winforms events

您能告诉我如何确定在winform中引发的事件 或者如何将所有引发的事件添加到列表或c#中的文件中?

5 个答案:

答案 0 :(得分:1)

从您的问题来看,听起来您希望看到每个被触发的事件。要做到这一点,您需要订阅每个事件。如果你真的想走这条路,你可以创建一个方法来读取传入的变量,并告诉你什么事件称为方法。然后,您可以将该方法挂钩到winform应用程序中的每个事件。列表将是巨大的,但它会让你知道每个事件何时被解雇。

答案 1 :(得分:1)

您可以使用Managed Spy。它在窗口左侧的树视图中显示进程列表,在右侧显示PropertyGrid。您可以展开该过程以查看该过程中的顶级窗口。

选择控件时,PropertyGrid会显示该控件的属性。单击“事件”选项卡将在树视图中的当前所选控件上显示诸如MouseMove之类的事件。要开始记录事件,请单击“开始记录”按钮。输出将如图所示。 enter image description here

答案 2 :(得分:0)

我不确定,我理解你的问题,但我仍然会尝试回答:
订阅事件时,将在引发该事件时调用您的方法。在您的方法中,您可以记录事件已被引发。

答案 3 :(得分:0)

如果您正在谈论Windows事件,则需要覆盖 WndProc()方法。

Control.WndProc Method

WndProc API basics

答案 4 :(得分:0)

获取当前Type

声明或继承的事件
 typeof(MyClass).GetEvents()

之后,您可以添加一个简单的委托

MyClass instance = new MyClass();
foreach (var e in typeof(MyClass).GetEvents())
{
   FieldInfo fi = typeof(MyClass).GetField(e.Name, 
                                       BindingFlags.NonPublic | BindingFlags.Instance);
   object value = fi.GetValue(instance);
   if (value == null)
   {
       e.AddEventHandler(instance, handler);
   }
}