在vb2010中命名文本框

时间:2013-01-19 12:54:51

标签: vb.net

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

有没有办法加快速度,提供一个具有唯一ID号的用户友好名称?或者只是犁过每个人的问题?

2 个答案:

答案 0 :(得分:3)

始终尝试为控件指定有意义的名称。如果您遵循这种方法,您会发现计算机无法提供帮助,因此需要手动完成。在您的情况下,它如何知道TextBox1需要识别name

txtName1对于控件来说也不是一个好名字,因为 a)它不会告诉开发人员他的名字是什么, b)什么是{{ 1}?这是否意味着名称的第一部分,即名字?或列表中第一个人的名字?正确的名称类似于1txtCustomerFirstName(分别用于 a) b),除非您有其他注意事项,例如保留控件的名称尽可能短,匹配数据库字段名称或其他原因。

来源:我为保险管理开发了一个企业级应用程序,其中包含1000多个文本框,并且是目前任何问题的主要支持联系人。根据我的经验,控件的命名是 NOT ,大部分时间都在这里。

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

答案 1 :(得分:2)

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

enter image description here

  

Usually if you want to check if a Control is a Textbox we can use 17, which represents msoTextBox, the mso shape type enum for a TextBox. However those embedded Form type controls (Forms 2.0) are Shapes and do not differentiate each type with different values but common 12, the type enum which stands for msoMixedShapes. Following 2nd code works for a FORM, however it's hard to get the same settled for Excel sheet Shapes (textboxes)... Click on the link to view all the MsoShapeType Enumeration.

如果您真的希望将有意义的名称赋予工作表中的Shape文本框,可以采用以下方法:

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

输出:

enter image description here

如果这些tecbox在Form中,那么试试这个:你可以使用相同的逻辑将所有名称放在一个范围内,然后迭代它;)

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