我已经在下一个循环中通过编码创建了按钮和文本框, 结果
'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"
'...
我希望在点击按钮时获取文本框属性,
我点击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
答案 0 :(得分:25)
您可以通过Form.Controls
属性按名称访问控件,例如:
Dim text1 As TextBox = CType(Me.Controls("text_1"), TextBox)
答案 1 :(得分:9)
作为一个快速有用的提示,您似乎不必为了访问表单上的控件而在CType语句中指定控件类型。我在尝试访问多种类型的表单控件时遇到过这种情况,例如按钮和文本框,所有这些都使用相同的代码行。
CType(Controls("NAME_OF_CONTROL"), Control)
请注意,而不是准确指定控件的类型,例如' TextBox'或者'按钮',您只需声明'控制'。这允许您普遍地更改任何类型的控件,而无需指定其类型。
我无法在其他任何地方找到这个,所以我想我会分享它!
答案 2 :(得分:3)
以下是代码。
Dim oObj As Object = Me.Controls.Find("control name", True).FirstOrDefault()
Obj.Property = Value
我希望它有所帮助。
答案 3 :(得分:0)
线程的标题和您对问题的描述似乎彼此略有不同。
要回答您的标题(要按名称查找控件),请使用以下命令:
Dim myControlToFind = LayoutRoot.FindName("NAMEOFCONTROL")
可以找到有关此方法的更多信息here。
要回答您的问题的说明(要在点击后访问代码生成的控件),请执行以下操作:
在创建控件的循环中添加以下处理程序
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
答案 4 :(得分:0)
Dim sometext As TextBox = CType(Me.Controls("sometext "), TextBox)
答案 5 :(得分:0)
以上都不对我有用。这样做:
Dim selVal As String = CType(Form.FindControl(myListName), DropDownList).SelectedValue