-1

ここ数日、.Net アプリケーションをクリックしたときにすべてのコントロールを動的に取得できるメソッドを C# で作成する方法について調査してきました。そこにある例のほとんどは、たとえば指定したボタンにあります

ctl.MouseClick += new MouseEventHandler(Form1_MouseClick);

上記の例では、 を指定してForm1_MouseClickいます。

私が探しているのは、クリックした.Netアプリケーションからすべてのコントロールとそのプロパティを動的に取得することです。例を挙げると、2 つの .Net アプリがあり、1 つには 3 つのコンボ ボックスがあり、もう 1 つには 3 つのボタンがあります。最初のアプリをクリックすると、3 つのコンボ ボックスがあり、そのプロパティが表示され、2 つ目のアプリをクリックすると、 3 つのボタンとそのプロパティがあることがわかります。純粋に C# で書かれた .Net 用のオブジェクト Spy のようなもの

私の問題は、どこから始めればよいかわからないことです。誰かが私を正しい方向に向けることができれば、本当に感謝しています.

4

1 に答える 1

0

リフレクションを使用できます。

foreach (var control in <YourForm>.Controls)
        {
            var props = control.GetType().GetProperties();
            foreach (var propertyInfo in props.Where(p=>p.PropertyType == typeof(string)))
            {
                Console.WriteLine("Name: {0} - Value: {1}", propertyInfo.Name, propertyInfo.GetValue(control, null));
            }
        }

これは、目標を達成する方法のほんの一例です。

乾杯、マーティン

于 2014-08-21T22:36:49.997 に答える