我有两种形式。表单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(),我会看到设计器中的表单。
有关如何让这些物品出现的任何想法?
答案 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函数。
我举了一个例子来说明这可以轻松完成。
点击“显示表单”会产生以下结果:
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
那就是它!!