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

时间:2013-07-17 18:46:04

标签: vb.net winforms visual-studio-2010 variables

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

在表格1上我有:

Dim ChangeJobInfo As New Form2(Employee)
ChangeJobInfo.Show()

在表格2上我有:

Public Sub New(ByVal Employee As String)
MsgBox(Employee)
End Sub

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

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

3 个答案:

答案 0 :(得分:6)

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

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

如果您不致电InitializeComponent(),您的完整GUI将无法呈现。

答案 1 :(得分:4)

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

我举了一个例子来说明这可以轻松完成。

enter image description here

点击“显示表单”会产生以下结果:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Form2.Show()
End Sub

,仅用于显示第二种形式。

单击“传递数据”结果,代码如下:

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

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

答案 2 :(得分:1)

我迟到但我认为这个答案可以提供帮助。

例如,Form1命名为" menu"打开并将变量传递给名为" ordine"的Form2。 要传递的变量是" hotel"

在button_click上的菜单中

Dim ordinef As New Ordine()

If ordinef Is Nothing Then
    'control that form is not opened yet if open close before
    ordinef = New Ordine()
Else
    ordinef.Close()
    ordinef = New Ordine()
End If

ordinef.hotel = hotel

ordinef.Show()

在Form2(Ordine)中:

Private Sub Ordine_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

public hotel as string

msgbox hotel

那就是它!!