0

我正在 vb2010 中创建一个需要大量文本框的应用程序。将每个文本框重命名为具有唯一标识符非常耗时。例如,将 TextBox1 重命名为 txtName1 是一个漫长的过程,因为它们有很多。

有什么方法可以加快速度,以提供具有唯一 ID 号的用户友好名称?或者这只是一个通过每一个犁的问题?

4

2 回答 2

3

始终尝试为控件分配一个有意义的名称。如果你按照这种方法,你会发现电脑帮不上忙,所以需要手动完成。就您而言,它如何知道TextBox1需要识别一个name

txtName1对于控件来说也不是一个好名字,因为a)它没有告诉开发人员这个名字是谁,b)是什么1?它是指名字的第一部分,即名字吗?还是列表中第一个人的名字?正确的名称将类似于txtCustomerFirstNametxtFirstCustomerFullName(分别用于a)b)),除非您有其他考虑,例如保持控件的名称尽可能短、匹配数据库字段名称或其他原因。

资料来源:我开发了一个企业级的保险管理应用程序,包含 1000 多个文本框,目前我是任何问题的主要支持联系人。根据我的经验,控件的命名不是您大部分时间花费的地方。

作为旁注,如果您通过设计器手动重命名控件,它也会重命名代码中的所有用法。它大大减少了需要完成的工作。

于 2013-01-19T17:34:03.300 回答
2

尝试:编辑,因为我现在在 PC 前面;)考虑上面的答案确实很好。无论如何,这里有一些事情要知道。当您在 Excel 工作表中添加文本框或任何其他控件时,它会变成Embedded如图所示的类型。

在此处输入图像描述

通常,如果您想检查 Control 是否为Textbox,我们可以使用17,它表示msoTextBox,即 TextBox 的mso 形状类型枚举。然而,那些嵌入的Form 类型控件(Forms 2.0)是 Shapes 并且不会用不同的值区分每种类型,而是常见的12,类型 enum 代表msoMixedShapes。以下第二个代码适用于 a FORM,但是对于 Excel 工作表形状(文本框)很难得到相同的解决...单击链接以查看所有MsoShapeType Enumeration

如果您真的希望为工作表中的形状文本框赋予有意义的名称,这是一种方法:

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 
于 2013-01-19T14:09:49.370 回答