3

私には2つのフォームがあります。フォーム 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 をセットアップするときに、コンボボックス、日付ピッカー、2 つのテキスト ボックス、送信ボタンなどを追加しましたが、フォームが読み込まれると完全に空白になります。エラーはありません。MsgBox は正しい結果を返しますが、GUI 要素は表示されません。フォーム 1 のコードを Form2.show() に変更すると、フォームがデザイナにレイアウトされたように表示されます。

それらのアイテムを表示させる方法についてのアイデアはありますか?

4

3 に答える 3

7

Sub の 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

これは単に 2 番目のフォームを表示するために使用されます。

[Pass Data] をクリックすると、次のコードが生成されます。

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 (通常):

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 に答える