为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过“字符串名称”获取控件属性?

如何通过“字符串名称”获取控件属性?

慕森卡 2019-10-21 15:46:06
通过在下一个循环中进行编码,我已经创建了按钮和文本框,结果'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_1.Name.ToString 但是我无法获得text_1,2,3 ....属性。我通过拆分函数button_1.Name.ToString做了一些技巧,并获取了最后一个数字并将其添加到文本框名称中,例如,"text_" & button_1.Name.ToString但是我无法将此字符串转换为对象。更新资料这是我用来在循环中加载控件的代码: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
查看完整描述

3 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

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


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


查看完整回答
反对 回复 2019-10-21
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

作为快速有用的提示,您似乎不必为了访问窗体上的控件而在CType语句中指定控件的类型。当我尝试使用同一行代码访问多种类型的表单控件(例如按钮和文本框)时遇到了这种情况。


CType(Controls("NAME_OF_CONTROL"), Control)

请注意,您无需指定确切的控件类型(例如“文本框”或“按钮”),而只需声明“控件”即可。这使您可以通用地更改任何类型的控件,而无需指定其类型。


我在其他任何地方都找不到,所以我想分享一下!


查看完整回答
反对 回复 2019-10-21
?
HUH函数

TA贡献1836条经验 获得超4个赞

线程的标题和您对当前问题的描述似乎彼此有所不同。


要回答您的标题(以其名称查找控件),请使用以下命令:


Dim myControlToFind = LayoutRoot.FindName("NAMEOFCONTROL")

有关此方法的更多信息,请参见此处。


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


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


Addhandler YOURCONTROL.Clicked, AddressOf Textbox_Clicked

...然后这将处理click事件


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


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 572 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信