如何通过“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
我希望它有帮助。