1

データベースのレコードを編集する画面を作成しました。ユーザーがテーブルを選択した後、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 に存在する値にアクセスするにはどうすればよいですか?

4

2 に答える 2

3

まず、TextBoxに名前を設定する必要があります。基本的にaTextbox.Name="TextBox1"。次に、以下を使用してコントロールを見つけることができるはずです。

Control c =  TableLayoutPanel1.Controls.Find("TextBox1",true)

ただし、これにより、テキストボックスではなくコントロールが提供されることに注意してください。したがって、適切と思われる方法で型キャストします。

Ctype(c,TextBox)
DirectCast(c,TextBox)
于 2013-01-23T09:51:03.967 に答える
1

WozzeC が言うように、テキスト ボックスに一意の名前を付ける必要があります。

 aTextBox.Name = "TextBox" & ln

次に、この方法で見つけることができます

Dim words = TableLayoutPanel1.Controls("Textbox1").Text

または同じループ内にある場合

 Dim words = TableLayoutPanel1.Controls("Textbox" & ln).Text
于 2013-01-23T23:27:18.867 に答える