14

我已经通过在下一个循环中编码创建了按钮和文本框,结果

'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
4

6 回答 6

30

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

Dim text1 As TextBox = CType(Me.Controls("text_1"), TextBox)
于 2013-02-25T21:47:09.050 回答
10

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

CType(Controls("NAME_OF_CONTROL"), Control)

请注意,您无需准确指定控件的类型,例如“TextBox”或“Button”,只需声明“Control”即可。这允许您普遍更改任何类型的控件,而无需指定其类型。

我在其他任何地方都找不到这个,所以我想我会分享它!

于 2015-08-13T06:29:40.307 回答
7

下面是代码。

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

我希望它有所帮助。

于 2017-05-05T19:47:44.747 回答
1
Dim sometext As TextBox = CType(Me.Controls("sometext "), TextBox)
于 2017-12-14T10:59:52.570 回答
0

线程的标题和您对手头问题的描述似乎彼此有点不同。

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

Dim myControlToFind = LayoutRoot.FindName("NAMEOFCONTROL")

可以在此处找到有关此方法的更多信息。

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

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

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
于 2013-02-26T10:49:52.567 回答
0

以上都不适合我。这样做:

Dim selVal As String = CType(Form.FindControl(myListName), DropDownList).SelectedValue
于 2020-08-05T02:22:42.943 回答