Vb.net mdi形式的语言

Vb.net mdi形式的语言,vb.net,Vb.net,我在将lenguage设置为MDI表单时遇到问题。 在我的主表单中,我有一个menustrip,我使用资源文件进行翻译 我想知道我做的事情是否正确 我的代码如下(示例): 然后,在我的SalesNote Form_结束活动中 Main.SNFrm.Dispose() 这是正确的吗?救命啊 确保您的属性中的IsMdiContainer设置为True,否则您可以通过编程方式将其设置为表单加载时的状态: Private Sub Main_Load(sender As System.Object, e

我在将lenguage设置为MDI表单时遇到问题。 在我的主表单中,我有一个menustrip,我使用资源文件进行翻译

我想知道我做的事情是否正确

我的代码如下(示例):

然后,在我的SalesNote Form_结束活动中

Main.SNFrm.Dispose()

这是正确的吗?救命啊

确保您的属性中的
IsMdiContainer
设置为
True
,否则您可以通过编程方式将其设置为表单加载时的状态:

Private Sub Main_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Me.IsMdiContainer = True
End Sub
您不需要立即为SalesNote表单创建实例:

  Public SNFrm As SalesNote
因为您正在这里实例化它:

 Private Sub MenuSalesNote_Click(......)
  SNFrm = New SalesNote
  SNFrm.MdiParent = Me
  SNFrm.StartPosition = FormStartPosition.CenterScreen
  SNFrm.Show()
 End Sub
但是,如果在
MenuSalesNote\u Click()
之前调用了
SetLanguage()
过程,则最好立即实例化它,或者您可以在此处实例化它:

Private Sub SetLanguage()
  SNFrm = New SalesNote    
  SNFrm.Text = My.Resources....
  SNFrm.AcceptBtn.Text = My.Resources...
End Sub
但是,您不再在
菜单中实例化它了请注意\u Click()

 Private Sub MenuSalesNote_Click(......)
  SNFrm.MdiParent = Me
  SNFrm.StartPosition = FormStartPosition.CenterScreen
  SNFrm.Show()
 End Sub
您还可以通过检查是否已经存在SalesNote表单的实例来实现这一点,如:

 Private Sub MenuSalesNote_Click(......)

   If (SNFrm is Nothing) Then
      SNFrm = New SalesNote
   End if
   SNFrm.MdiParent = Me
   SNFrm.StartPosition = FormStartPosition.CenterScreen
   SNFrm.Show()

 End Sub


 Private Sub SetLanguage()

   If (SNFrm is Nothing) Then
      SNFrm = New SalesNote
   End if
   SNFrm.Text = My.Resources....
   SNFrm.AcceptBtn.Text = My.Resources...

 End Sub

您不需要关闭
表单中的
Main.SNFrm.Dispose()
。顺便问一下,你到底有什么问题?@Edper对吗?我在加载表单之前引用SalesNote,然后在菜单中再次单击下面的“检查我的答案”。如果他只想要他的SNFrm的一个实例,在模块级声明它,并在实例化其表单之前验证它是否为空,这将实现这一点。@Edper但如果我在尝试转换SalesNote时未创建其实例,则抛出异常:对象引用未设置为对象的实例。子集合语言()已加载form@Edper,我需要SetLanguage中的翻译,因为用户可以更改主ffrom中的语言。@Edper最后一段代码,我需要在Public SNFrm中将SalesNote作为新的SalesNote进行实例?感谢所有@Edper Genius!
 Private Sub MenuSalesNote_Click(......)

   If (SNFrm is Nothing) Then
      SNFrm = New SalesNote
   End if
   SNFrm.MdiParent = Me
   SNFrm.StartPosition = FormStartPosition.CenterScreen
   SNFrm.Show()

 End Sub


 Private Sub SetLanguage()

   If (SNFrm is Nothing) Then
      SNFrm = New SalesNote
   End if
   SNFrm.Text = My.Resources....
   SNFrm.AcceptBtn.Text = My.Resources...

 End Sub