-1

过去几天我一直在研究如何在 C# 中编写一个方法,该方法可以在单击 .Net 应用程序时动态获取所有控件。大多数示例都在您指定的按钮上,例如

ctl.MouseClick += new MouseEventHandler(Form1_MouseClick);

在上面的示例中,我们指定Form1_MouseClick.

我正在寻找的是从您单击的任何 .Net 应用程序中动态获取所有控件及其属性。举个例子,如果我有 2 个 .Net 应用程序,一个有 3 个组合框,另一个应用程序有 3 个按钮,当我点击第一个时,它应该告诉我有 3 个组合框并显示其属性,而我点击第二个它应该告诉我有 3 个按钮及其属性。纯粹在 C# 中的 .Net 对象间谍之类的东西

我的问题是我不知道从哪里开始,如果有人能指出我正确的方向,我将不胜感激。

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 回答