TextBox_を取得してみますTextChangedイベント購読リストプロセス

1669 ワード

プロジェクトではダイナミックイベントバインド【複数のイベント】に役立ち、複数回のバインドをトリガーできるため、サブスクリプションリストを取得してイベントがバインドされているかどうかを判断し、問題を回避したい!
DelegateのGetInvocationListメソッドが依頼の購読リストを取得できることを知った関連資料を検索します.そこで問題はeventを介してdelegateに変換する方法に集中する.
Button Clickイベントの購読リストは、次の方法で入手できます.
PropertyInfo p = (typeof(Button)).GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);

EventHandlerList fplist = p.GetValue(this.button1, null) as EventHandlerList;

FieldInfo f = (typeof(Control)).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);

object key = f.GetValue(this.button1);

Delegate d = fplist[key];

Delegate[] fps = d.GetInvocationList();

注意:Winformのコントロールは、インスタンスのイベント名から直接変換することはできません.この方法はButtonでは正常に行われていますが、TextChangedイベントではなかなか入手できません.関連資料を探して得られた結論はimpossibleです.実現者がいたら教えてください.感謝しています.しかし、カスタムクラスでは、非常にhappyを実行することができます.このようにサブスクリプションリストを取得する必要がある場合は、カスタムTextBoxコントロールを実現することができます.それによって、目的を達成するために、プロジェクトの実際の状況を総合し、最後にフラグビットの方法で問題を解決することを決定しました.