如何通过“string名称”获得控制属性?

我已经创buildbutton和文本框通过编码在下一个循环,结果

'T(x).Name = "text_1" 'T(x).Name = "text_2" 'T(x).Name = "text_3" '.... 'B(x).Name = "button_1" 'B(x).Name = "button_2" 'B(x).Name = "button_3" '... 

我想获得textbox属性当我点击button时,我可以得到button属性,当点击button_1.Name.ToString但我不能得到text_1,2,3 ….属性。

我做一些伎俩通过分割functionbutton_1.Name.ToString并获取最后一个数字,并将其添加到文本框的名称,如"text_" & button_1.Name.ToString但我不能将此string转换为对象。

更新

这里是我用来加载循环中的控件的代码:

 C_A_TEXT(x) = New TextBox() C_A_TEXT(x).Dock = System.Windows.Forms.DockStyle.Fill C_A_TEXT(x).Location = New System.Drawing.Point(270, 5) C_A_TEXT(x).Margin = New System.Windows.Forms.Padding(0) C_A_TEXT(x).Size = New System.Drawing.Size(70, 27) C_A_TEXT(x).TabIndex = 5 C_A_TEXT(x).Name = "NEW_RECHARGE_COUNT_TEXT_" & x 

更新2

这里有更多的代码:

 AddHandler C_A_BUTTONS(x).Click, AddressOf C_A_BUTTON Private Sub C_A_BUTTON(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim thisButton As Button = sender Dim A = CType(Me.Controls("NEW_RECHARGE_COUNT_TEXT_1"), TextBox) MsgBox(A.Text.ToString) 'Error! End Sub 

您可以通过Form.Controls属性按名称访问控件,例如:

 Dim text1 As TextBox = CType(Me.Controls("text_1"), TextBox) 

作为一个快速有用的提示要注意,您似乎不需要在CType语句中指定控件的types,以便访问窗体上的控件。 当我尝试访问多种types的表单控件(如button和文本框)时,我遇到了这一切,所有这些都使用相同的代码行。

 CType(Controls("NAME_OF_CONTROL"), Control) 

请注意,并非明确指定“TextBox”或“Button”等types的控件,而只是简单地指定“Control”。 这使您可以普遍地更改任何types的控件,而无需指定其types。

我找不到其他地方,所以我想我会分享它!

线程的标题和对手头问题的描述看起来有些不同。

要回答您的标题 (按名称查找控件),请使用以下内容:

 Dim myControlToFind = LayoutRoot.FindName("NAMEOFCONTROL") 

关于这个方法的更多信息可以在这里find。

要回答你的问题的描述 (点击后访问代码生成控件),请执行以下操作:

在您创build控件的循环中,添加以下处理程序

 Addhandler YOURCONTROL.Clicked, AddressOf Textbox_Clicked 

…然后这将处理点击事件

 Private Sub Textbox_Clicked(sender as object, e as RoutedEventArgs) Dim tbClicked = Ctype(sender, TextBox) 'You can now access any of the properties of the textbox, for example Dim txt as String = tbClicked.Text Dim name as String = tbClicked.Name Dim height as Double = tbClicked.Height End Sub 

下面是代码。

 Dim oObj As Object = Me.Controls.Find("control name", True).FirstOrDefault() Obj.Property = Value 

我希望它有帮助。