如何在Dll中调用Application.AddMessageFilter

时间:2012-07-24 09:12:42

标签: c#

我想在C#中创建一个dll文件,它有一个静态方法,在加载此dll的Win表单上调用Application.AddMessageFilter()。

例如,

public Form1()
{
    // initializing
    MyDll.InvokeFilter(SomeClass); // Perfect!
}

我不希望它看起来如下所示(我甚至不认为这段代码会正常工作)

public Form1()
{
     // initializing

     // Send also the delegate to Application.AddMessageFilter as a parameter
     // to let MyDll know it, which is not as good.
     MyDll.InvokeFilterWithDelegate(SomeClass, Application.AddMessageFilter);
}

问题是我不知道如何从我的Dll文件调用Application.AddMessageFilter,因为Application类属于Form1,而不属于我的Dll库。

我错过了什么?

提前致谢。

1 个答案:

答案 0 :(得分:2)

Application类,或更具体地说System.Windows.Forms.Application不属于“Form1”,可以在System.Windows.Forms.dll中找到。在DLL项目中添加对它的引用。

ApplicationContexts存在潜在问题,但调用者不太可能从主UI线程以外的任何其他方式进行调用。

话虽如此,如果“SomeClass”只是IMessageFilter的一个实现,那么你的库函数有什么意义呢?他们可以自己致电Application.AddMessageFilter