3

プロパティとフィールドの値を取得したり、メソッドを呼び出したりするのは簡単ですが、イベント ハンドラーを表示するのは困難でした。PropertyInfo のように GetValue 関数を使用することはできません。

https://web.archive.org/web/20131213074318/http://bobpowell.net/eventsubscribers.aspxの指示に従ってみました- これはWindows Formsでイベントを表示するために機能します。

ただし、Silverlight には「EVENTHANDERLIST」がないため、これは Silverlight では機能しません

Silverlight でイベント VALUES を表示する方法についてのアイデアはありますか?

私はこれを試しました

namespace eventhandlers
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Type t = sender.GetType();
            FieldInfo fi = t.GetFields(BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic);

            EventHandler eh = (EventHandler)fi.GetValue(sender);

            System.Reflection.EventInfo[] eventInfo = button1.GetType().GetEvents();                
            Delegate[] dels = eh.GetInvocationList();
            foreach(Delegate del in eh.GetInvocationList() )
            {
                string text = del.Method.Name;
                textBlock1.Text = text + ". " + textBlock1.Text;
            }
        }
    }
}

しかし、「FieldAccessException was unhandled by user code」というエラーが表示され、「SilverlightApp1.MainPage.button1_Click (System.Object, System.Windows.RoutedEventArgs)」メソッド「System.Windows.Controls.Primitives.ButtonBase._isLoaded」にアクセスできませんでしたフィールド。" で

EventHandler eh = (EventHandler)fi.GetValue(sender);
4

0 に答える 0