Vb.net 如何加载';未来';在我使用窗体控件之前?详细解释如下:

Vb.net 如何加载';未来';在我使用窗体控件之前?详细解释如下:,vb.net,vb6,vb6-migration,Vb.net,Vb6,Vb6 Migration,我正在vb6程序上执行迁移,迁移到vb.net。理解这个问题需要的基本知识是,有两种形式需要相互交谈,frmInput1和frmInput2。我有以下代码(在frmInput1后面),用于检查frmInput2上的文本框是否有某个值,似乎在它加载之前: If frminput2.lblInputMac.Text <> "(no filename)" Then Dim calc As CalculationCaster = New CalculationCaster

我正在vb6程序上执行迁移,迁移到vb.net。理解这个问题需要的基本知识是,有两种形式需要相互交谈,frmInput1和frmInput2。我有以下代码(在frmInput1后面),用于检查frmInput2上的文本框是否有某个值,似乎在它加载之前:

If frminput2.lblInputMac.Text <> "(no filename)" Then
        Dim calc As CalculationCaster = New CalculationCaster
        Call calc.FillMac()
        cmdNext.Enabled = False

        frminput2.FraInner.Enabled = True
我假设这意味着frmInput2中的对象尚未加载。如何在显示frmInput2之前加载它

谢谢

尼克


此时,您应该能够在不显示表单的情况下在表单之间进行通信。在未显式实例化表单之前,不应引用表单。

创建表单的实例

Dim f As New frmInput2
If f.lblInputMac.Text  <> "(no filename)" Then
    ...
End If
然后您可以在表单上使用任何属性、方法或控件

Dim f As New frmInput2
If f.lblInputMac.Text  <> "(no filename)" Then
    ...
End If
如果f.lblInputMac.Text“(无文件名)”则
...
如果结束

frminput2
可能是frminput2类型的隐式全局实例

如果在VB6中定义名为
MyForm
的表单类型,平台将自动创建一个同名的隐式全局变量
MyForm
。每当您在代码中引用此变量时,它都会自动为您加载表单的实例

就好像你有这个密码一样

Public Function MyForm() As MyForm
  Static f As MyForm
  If f Is Nothing Then
    f = New MyForm
  End If
  Return f
End Function

我尝试了此操作,然后出现以下错误:无法加载文件或程序集“MSComDlg,Version=1.2.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。我已重新启动VS2010,但错误仍然存在。有什么想法吗?感谢在我看来,
frmInput2
上使用的控件未在程序集中引用。能否在设计器中加载
frmInput2
?您应该仔细检查您的项目,并(在可能的情况下)将COM组件替换为其.NET等效组件,或者确保已添加对表单所需COM对象的引用。其中有一个CommonDialog(VB6回溯),但它以前一直有效。是否有.NET版本的cmdlg?我听说过OpenDialog之类的东西,但它似乎并没有做同样的事情。如果你打开有问题的表单,看看工具箱。在
对话框
部分中,您将看到旧的
CommonDialog
集成到一个组件中的所有.NET实现。也可以在代码中创建其中的每一个。例如:
Dim dlg As New FileOpenDialog()
我尝试了此操作,但出现了以下错误:无法加载文件或程序集“MSComDlg,Version=1.2.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。我已重新启动VS2010,但错误仍然存在。有什么想法吗?谢谢