揭示控件名称的最简单方法






3.13/5 (5投票s)
2005年4月19日
2分钟阅读

27199
在调试时,当鼠标悬停在控件上时显示控件名称。
引言
这个文本框叫做 txtFileName
还是 txtFile
? 如果你像我一样,有时会记不住各种控件的名称。这个易于实现的例程会在你将鼠标悬停在控件上时,在标题栏中显示该控件的名称。
讨论
我在任何项目中做的第一件事之一就是实现一种在调试应用程序时向我显示信息的方法。例如,我的许多错误处理程序都包含对一个特殊例程的调用,该例程会向我提供错误的详细信息,其中大部分信息我不想让用户看到。 另一个不错的调试功能是显示每个控件的名称,以便我记住它们是什么。
为此,我首先启用自定义调试模式。 然后,在应用程序启动时,我将所有控件通过一个子例程运行,该子例程将处理程序添加到另一个子例程,该子例程在标题栏中显示控件的名称。
启用自定义调试模式
最简单的方法是使用命令行变量。 在 Visual Studio 中,单击“项目”、“属性”、“配置属性”,然后添加你想要的命令行变量。 我将使用 /d。 然后,将全局 Boolean
变量 isDebug
添加到你的代码中,并在你启动项目时找到命令行变量时将其设置为 True
Public isDebug as Boolean = False
Public Sub Main
If Environment.CommandLine.IndexOf("/d")> -1 Then isDebug = True
.....
End Sub
通过子例程运行控件
该子例程是递归的——也就是说,它可能会调用自身。 你通过将你的最大控件(即你的 Form
)的名称传递给它来启动递归调用的链。 后续调用由子例程在它发现正在处理的控件具有子控件时进行。
Private Sub AddHandlerForDebug(ctrlParent as Control)
Dim ctrl as Control
For Each ctrl in ctrlParent.Controls
AddHandler ctrl.MouseEnter, AddressOf ShowControlName
If ctrl.HasChildren Then AddHandlerForDebug(ctrl)
Next
End Sub
这是一个 MouseEnter
事件将触发的子例程
Private Sub ShowControlName(sender as System.Object, e as System.EventArgs)
Me.Text = sender.Name
End Sub
现在,只需回到我们的 Main
子例程并添加对 AddHandlerForDebug
的调用即可。
Public Sub Main
If Environment.CommandLine.IndexOf("/d")>-1 Then isDebug = True
If isDebug Then AddHandlerForDebug(Me)
.....
End Sub
你可以在 ShowControlName
中添加任何你想要的功能。 例如,我喜欢将我的应用程序的“真实”名称保存在标题栏中,并在大括号中附加控件名称。 并且只需进行更多的工作,你甚至可以让标题栏显示控件的位置、其父控件或任何其他属性。