1

このdllをロードするWinフォームでApplication.AddMessageFilter()を呼び出す静的メソッドを持つC#でdllファイルを作成したいと思います。

例えば、

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ライブラリではなくForm1に属しているため、DllファイルからApplication.AddMessageFilterを呼び出す方法がわかりません。

私は何が欠けていますか?

前もって感謝します。

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 に答える