Vb.net 使用.net 1.1获取一个窗体中使用的所有windows窗体控件的列表
是否有机会获取windows窗体中的所有控件名称。 我看到有更新的.net版本的选项,但我将此项目限制为1.1:( 我试过的是这个,但在1.1中,一切都很难找到Vb.net 使用.net 1.1获取一个窗体中使用的所有windows窗体控件的列表,vb.net,Vb.net,是否有机会获取windows窗体中的所有控件名称。 我看到有更新的.net版本的选项,但我将此项目限制为1.1:( 我试过的是这个,但在1.1中,一切都很难找到 Public Sub GetAllControlIDs(ByVal c As Windows.Forms.Control, ByVal ids As List(Of String)) ids.Add(c.ID) If c.HasControls() Then For Each ch
Public Sub GetAllControlIDs(ByVal c As Windows.Forms.Control, ByVal ids As List(Of String))
ids.Add(c.ID)
If c.HasControls() Then
For Each ch As Windows.Forms.Control In c.Controls
GetAllControlIDs(ch, ids)
Next
End If
End Sub
Private allControlIDs As List(Of String) = New List(Of String)()
在.NET 1.1中,没有泛型(.NET 2),因此不能使用
列表(字符串)
,但可以使用数组列表
:
Public Sub AddAllControlNames(ByVal c As Windows.Forms.Control, ByVal nameList As ArrayList)
nameList.Add(c.Name)
For Each ch As Windows.Forms.Control In c.Controls
AddAllControlNames(ch, nameList)
Next
End Sub
Private allControlNames As ArrayList = New ArrayList()
从表单中的某个位置调用(f.e.Load
):
在.NET 1.1中,没有泛型(.NET 2),因此不能使用
列表(字符串)
,但可以使用数组列表
:
Public Sub AddAllControlNames(ByVal c As Windows.Forms.Control, ByVal nameList As ArrayList)
nameList.Add(c.Name)
For Each ch As Windows.Forms.Control In c.Controls
AddAllControlNames(ch, nameList)
Next
End Sub
Private allControlNames As ArrayList = New ArrayList()
从表单中的某个位置调用(f.e.Load
):
我在这里得到了一些错误:ByVal id作为(字符串的)列表)。错误是:未定义列表。好吧,这是一个老项目……它必须是1.1,对
GetAllControlIDs
的最高级调用在哪里?@AFriend:不管他是通过ByVal
还是ByRef
。List(Of T)
是一种引用类型,传递它的ByVal
仍然传递它的引用指针(类就是这样工作的)。唯一的区别是,如果您传递它ByRef
,您可以替换原始变量中的引用。错误是:未定义列表。好吧,这是一个老项目……它必须是1.1,对GetAllControlIDs
的最高级调用在哪里?@AFriend:不管他是通过ByVal
还是ByRef
。List(Of T)
是一种引用类型,传递它的ByVal
仍然传递它的引用指针(类就是这样工作的)。唯一的区别是,如果您传递它ByRef
,您可以替换原始变量中的引用。我在c.ID中得到错误,它说ID不是windows.forms.control的成员。是否有办法获取控件名而不是ID?@СааааМааааааааСаааа。看起来像是网络上的东西。@LarsTech:很好,谢谢。这是一个webforms方法。无论如何都不需要它。我在c.ID中遇到错误,它说ID不是windows.forms.control的成员。是否有办法获取控件名而不是ID?@СааааМааааааааСаааа。看起来像是网络上的东西。@LarsTech:很好,谢谢。这是一个webforms方法。反正也不需要