3

我有两种形式。表格 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() 我会看到设计器中布置的表单。

关于如何让这些项目出现的任何想法?

4

3 回答 3

7

将您在 Form2.vb 中的代码更改为New

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 将不会呈现。

于 2013-07-17T18:53:32.017 回答
5

您甚至不必使用 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

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

于 2013-07-17T21:02:27.953 回答
1

我迟到了,但我认为这个答案会有所帮助。

例如,名为“menu”的 Form1 打开并将变量传递给名为“ordine”的 Form2。要传递的变量是“酒店”

在 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

而已!!

于 2014-12-15T16:41:34.797 回答