[英]How to access values from textbox in tablelayoutpanel in vb.net
我创建了一个用于编辑数据库记录的屏幕。 用户选择表后,我在TableLayoutPanel1中动态添加了Labels和TextBox。 我想知道如何访问TableLayoutPanel1中TextBox中的值
我使用的代码:
Dim strSQL, strSQL1 As String
Dim ln As Integer
Dim reader As OleDbDataReader
Dim connection As OleDbConnection
Dim ds As New DataSet
connection = New OleDbConnection(CONNECT_STRING)
connection.Open()
ln = 0
strSQL = " select * from syscat.columns where TABSCHEMA like 'QA1MM%' and TABNAME like 'SKU_STR_LIST' with ur "
RichTextBox1.Text = RichTextBox1.Text + strSQL
Dim selectCMD As OleDbCommand = New OleDbCommand(strSQL, connection)
reader = selectCMD.ExecuteReader
MessageBox.Show("Column: " & reader(0) & " ")
While reader.Read()
If String.IsNullOrEmpty(reader(0)) Then
Else
TableLayoutPanel1.ColumnCount = 2
TableLayoutPanel1.RowCount = 20
Dim aLabel As New System.Windows.Forms.Label
Dim aTextBox As New System.Windows.Forms.TextBox
aLabel.Name = "New Label"
aLabel.Text = reader(0).Text
TableLayoutPanel1.Controls.Add(aLabel, 0, ln)
TableLayoutPanel1.Controls.Add(aTextBox, 1, ln)
ln = ln + 1
End If
End While
如何访问我在TableLayoutPanel1中动态添加的aTextBox中的值?
首先,您需要在TextBox上设置名称。 基本上aTextbox.Name =“TextBox1”。 然后你应该能够通过使用以下方法找到控件:
Control c = TableLayoutPanel1.Controls.Find("TextBox1",true)
但请记住,这将为您提供控件,而不是文本框。 所以你可以用任何你认为合适的方式对它进行类型化。
Ctype(c,TextBox)
DirectCast(c,TextBox)
正如WozzeC所说,你需要给文本框一个独特的名称,可能是这样的
aTextBox.Name = "TextBox" & ln
然后你可以这样找到它
Dim words = TableLayoutPanel1.Controls("Textbox1").Text
或者如果它在同一个循环中
Dim words = TableLayoutPanel1.Controls("Textbox" & ln).Text
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.