Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 了解Windows窗体应用程序的工具&x27;s窗体字段_Winforms_Desktop Application_Spy++ - Fatal编程技术网

Winforms 了解Windows窗体应用程序的工具&x27;s窗体字段

Winforms 了解Windows窗体应用程序的工具&x27;s窗体字段,winforms,desktop-application,spy++,Winforms,Desktop Application,Spy++,我正在处理一个WinForm应用程序。 表单有许多字段/组件,但构建得很差。 例如,一个字段在一种情况下用作用户名,在另一种情况下用作文件夹路径。代码维护得很差 当我运行应用程序并显示GUI时,我可以使用类似“spy++”的工具,它可以显示组件(而不是ID)的“名称”。例如,按钮的名称或标签的名称 或者,如果我可以将SPY++用于“名称”,请告诉我?我将通过向窗体中添加工具提示控件,并迭代每个控件,并向每个控件添加工具提示消息来解决此问题,该控件是该控件的名称 首先,将工具提示对象添加到表单中(

我正在处理一个WinForm应用程序。 表单有许多字段/组件,但构建得很差。 例如,一个字段在一种情况下用作用户名,在另一种情况下用作文件夹路径。代码维护得很差

当我运行应用程序并显示GUI时,我可以使用类似“spy++”的工具,它可以显示组件(而不是ID)的“名称”。例如,按钮的名称或标签的名称


或者,如果我可以将SPY++用于“名称”,请告诉我?

我将通过向窗体中添加工具提示控件,并迭代每个控件,并向每个控件添加工具提示消息来解决此问题,该控件是该控件的名称

首先,将工具提示对象添加到表单中(从设计器的“工具”部分)。您可以重命名它,但为了演示起见,我将其保留为默认名称
toolTip1

接下来,在表单的代码页中添加一个类似于我下面发布的方法。(我假设这是为C编写的,但代码很简单,可以很容易地为VB或C++修改)

最后,在表单构造函数中,在调用
InitializeComponent()
之后添加以下代码行

这将向表单中的每个控件添加工具提示消息。您只需将鼠标悬停在每个控件上,一两秒钟后工具提示将弹出一条消息,显示基础控件的名称


或者,您可以递归地向每个控件添加MouseHover事件,并且在触发该事件时,将该控件的名称写入调试器。如果您已经在表单中使用工具提示控件,这也会起作用。

我认为System.Reflection类在这方面可能会对您有更多帮助。
public void AddNameToToolTip(Control c)
{
    toolTip1.SetToolTip(c, c.Name);
    foreach (Control child in c.Controls) AddNameToToolTip(child);
}
AddNameToToolTip(this);