1

動的コントロールで作成した AddHandler を使用して、あるフォームから別のフォームに情報を渡す方法を見つけようとしています。

私は次のようなループを持っています

Dim I As Integer

For I = 0 To 10
    Dim gbNew As New GroupBox()
    Dim pbNew As New PictureBox()
    Dim llbNew As New Label()
    Dim tlbNew As New Label()
    Dim olbNew As New Label()
    Dim slbNew As New Label()
    Dim wlbNew As New Label()

    UserName = dt.Rows(I)("UserName").ToString()
    Status = dt.Rows(I)("LastJobType").ToString()
    JobType = dt.Rows(I)("LastJobType").ToString()
    LLocation = dt.Rows(I)("LastLocation").ToString()
    TimeIn = dt.Rows(I)("LogInTime")
    TimeOut = dt.Rows(I)("LogOutTime")
    FlowLayoutPanel1.Controls.Add(gbNew)

    gbNew.Controls.Add(llbNew)
    llbNew.Visible = True
    llbNew.Text = LLocation
    llbNew.Font = New Font(llbNew.Font.FontFamily, 6.5)
    llbNew.Location = New System.Drawing.Point(3, 25)
    llbNew.BorderStyle = BorderStyle.None
    llbNew.TextAlign = ContentAlignment.MiddleLeft
    llbNew.Size = New Size(80, 15)

    gbNew.Size = New System.Drawing.Size(270, 80)
    'gbNew.BackColor = System.Drawing.Color.Silver
    gbNew.Visible = True
    gbNew.Text = UserName & " " & I + 1

    AddHandler gbNew.Click, AddressOf ShowForm
Next

イベントハンドラは、サブ ShowForm を起動します。

Private Sub ShowForm()
    Details.Show()
End Sub

これにより、フォームがポップアップ表示されますが、動的に生成されたコントロールからループ外の静的コントロールに必要な情報を渡す方法がわかりません。

私はフォームで静的コントロールを使用していました:

label1.text = "something"

新しいフォームを開くと、 のようなものを使用して、それを新しいフォームに読み込むことができました dim info as string = form1.label.text。しかし、動的なので、label1.text はありません。代わりに、llbNew.Textform2 から呼び出すことができないと思われる があります :(

form1 の動的コントロールから form2 に情報を渡すにはどうすればよいですか?

これを C# ではなく VB.NET に保管してください。VB.NET はほとんど理解していないため、知識がまったくない C# から脳を変換しようとすることは言うまでもありません。

4

1 に答える 1

1

これがあなたが取ることができる方向です。明確であることを願っています:

For I = 0 To 10
    (...)
    gbNew.Text = UserName & " " & I + 1
    gbNew.Tag = dt.Rows(I) ' Any information that you need here 

    AddHandler gbNew.Click, AddressOf ShowForm  '(No changes here)
Next 

' Use the appropriate Event Handler signature @ the handler Sub
Private Sub ShowForm(sender as Object, e as EventArgs)
    Dim groupBoxClicked as GroupBox = TryCast(sender, GroupBox)
    If groupBoxClicked IsNot Nothing
        Dim detailsForm as New Details()
        detailsForm.ParentInformation = groupBoxClicked.Tag
        detailsForm.ShowDialog()
    End If
End Sub

(...)

Public Class Details ' Your Details Form
    Public Property ParentInformation as DataRow

End Class
于 2012-10-03T00:55:46.923 に答える