首页 > 解决方案 > 在 Form1 中设置 Form2 的属性不会产生任何结果

问题描述

我将一个 VB6 项目升级到 .NET,但没有按预期工作。

我曾经能够将公共属性从一个类加载到另一个类中,但这些属性在检查时为空。

Form1:
Dim frm1 As New Form1
frm1.empId = Me.empId.Text
Form2.Show()

Form2:
Public empId As Integer

Form_Load in Form2:
MsgBox(empId) // Null

我期待 Form2 回显员工 ID,但它为空或为空。

我究竟做错了什么?



编辑

这是我正在使用的确切代码。

This is FrmSerialize
Private Sub CmdLogin_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdLogin.Click
    FrmAutoCheck.empId = Me.empId.Text
    FrmAutoCheck.orderNo = Me.orderNo.Text
    FrmAutoCheck.partNo = Me.partNo.Text
    FrmAutoCheck.Show()
    Me.Hide()
End Sub

This is FrmAutoCheck: This is where I want to echo my property
Private Sub FrmAutoCheck_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
    'The empId is a public property, set at the top of the FrmAutoCheck class
    'So, I am expecting to see the value of empId, since Form1.CmdLogin set this value
    MsgBox(empId)
End Sub

标签: vb.net

解决方案


您正在设置 的属性empIdForm1但正在加载Form2。试试看:

Form1:
Dim frm2 As New Form2
frm2.empId = Me.empId.Text
frm2.Show()

当你从 VB6 升级到 .Net 时,它在调用方法时不会为表单创建对象Show(),而是调用FormX.Show(). 您必须通过实例化类并设置属性来更改它,如代码所示。


推荐阅读