1

我想在 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 库。

我错过了什么?

提前致谢。

4

1 回答 1

2

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

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

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

于 2012-07-24T23:06:32.457 回答