我正在 vb2010 中创建一个需要大量文本框的应用程序。将每个文本框重命名为具有唯一标识符非常耗时。例如,将 TextBox1 重命名为 txtName1 是一个漫长的过程,因为它们有很多。
有什么方法可以加快速度,以提供具有唯一 ID 号的用户友好名称?或者这只是一个通过每一个犁的问题?
我正在 vb2010 中创建一个需要大量文本框的应用程序。将每个文本框重命名为具有唯一标识符非常耗时。例如,将 TextBox1 重命名为 txtName1 是一个漫长的过程,因为它们有很多。
有什么方法可以加快速度,以提供具有唯一 ID 号的用户友好名称?或者这只是一个通过每一个犁的问题?
始终尝试为控件分配一个有意义的名称。如果你按照这种方法,你会发现电脑帮不上忙,所以需要手动完成。就您而言,它如何知道TextBox1
需要识别一个name
?
txtName1
对于控件来说也不是一个好名字,因为a)它没有告诉开发人员这个名字是谁,b)是什么1
?它是指名字的第一部分,即名字吗?还是列表中第一个人的名字?正确的名称将类似于txtCustomerFirstName
或txtFirstCustomerFullName
(分别用于a)和b)),除非您有其他考虑,例如保持控件的名称尽可能短、匹配数据库字段名称或其他原因。
资料来源:我开发了一个企业级的保险管理应用程序,包含 1000 多个文本框,目前我是任何问题的主要支持联系人。根据我的经验,控件的命名不是您大部分时间花费的地方。
作为旁注,如果您通过设计器手动重命名控件,它也会重命名代码中的所有用法。它大大减少了需要完成的工作。
尝试:编辑,因为我现在在 PC 前面;)考虑上面的答案确实很好。无论如何,这里有一些事情要知道。当您在 Excel 工作表中添加文本框或任何其他控件时,它会变成Embedded
如图所示的类型。
如果您真的希望为工作表中的形状文本框赋予有意义的名称,这是一种方法:
Option Explicit
Sub reNameMeaningfully()
Dim shp As Shape
Dim arrNames As Variant
Dim i As Integer
arrNames = WorksheetFunction.Transpose(Sheets(1).Range("D2:D7").Value)
'-- assuming that you have exact number of names for the exact number of controls
For i = LBound(arrNames) To UBound(arrNames)
Set shp = Sheets(1).Shapes(i)
'-- we can't check Type here. So we check if default-name begins with Text
If shp.Name Like "Text*" Then
shp.Name = arrNames(i)
End If
Next i
End Sub
输出:
如果这些 tecboxes 在 aForm
那么试试这个:您可以使用相同的逻辑将所有名称放在一个范围内,然后遍历该范围;)
Dim Cont as Control
Dim i as integer
i = 1
For Each Cont In Me.Controls
If TypeName(Cont) = "TextBox" Then
Cont.name = "txt" & i '-- Rename
End If
Next Cont