在VS 2010中传递Windows窗体之间的变量

gwh*_*ing 3 vb.net variables visual-studio-2010 winforms

我有两种形式.表单1允许用户从下拉组合框中选择一名员工.然后将该员工传递到表2,用户输入有关该员工的其他信息.然后,该数据将传递到SQL表中.

表格1我有:

Dim ChangeJobInfo As New Form2(Employee)
ChangeJobInfo.Show()
Run Code Online (Sandbox Code Playgroud)

表格2我有:

Public Sub New(ByVal Employee As String)
MsgBox(Employee)
End Sub
Run Code Online (Sandbox Code Playgroud)

变量传递得很好.问题是新表格上没有任何内容.当我设置Form2时,我添加了一个组合框,日期选择器,两个文本框,提交按钮等,但是当表单加载时它完全是空白的.没有错误,MsgBox返回正确的结果,但没有我的gui元素出现.如果我将表单1上的代码更改为Form2.show(),我会看到设计器中的表单.

关于如何让这些物品出现的任何想法?

小智 6

将Form2.vb中的代码更改为Newsub:

Public Sub New(ByVal Employee As String)

    ' This call is required by the designer.

    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.

    MsgBox(Employee)

End Sub
Run Code Online (Sandbox Code Playgroud)

如果您不打电话InitializeComponent(),您的完整GUI将不会呈现.


Eri*_*c F 5

您甚至不必使用 InitializeComponent 或 New 函数。

我已经举了一个例子来说明这可以多么容易地完成。

在此处输入图片说明

单击“显示表单”结果如下:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Form2.Show()
End Sub
Run Code Online (Sandbox Code Playgroud)

它只是用来显示第二种形式。

单击“传递数据”会产生以下代码:

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    Form2.Label1.Text = TextBox1.Text
End Sub
Run Code Online (Sandbox Code Playgroud)

如上所示,您可以直接将数据从控件传递到控件。同样的想法也可以用于变量。