1

MDI フォームへの言語の設定に問題があります。私のメインフォームにはメニューストリップがあり、翻訳にリソースファイルを使用しています

自分が正しいことをしているか知りたかった

私のコードはこれです(例):

Public Class Main

   Public SNFrm As New SalesNote

   Private Sub SetLanguage()

      SNFrm.Text = My.Resources....
      SNFrm.AcceptBtn.Text = My.Resources...

   End Sub

   Private Sub MenuSalesNote_Click(......)

    SNFrm = New SalesNote
    SNFrm.MdiParent = Me
    SNFrm.StartPosition = FormStartPosition.CenterScreen
    SNFrm.Show()

   End Sub

End Class

次に、My SalesNote Form_Closing イベントで

Main.SNFrm.Dispose()

これは正しいですか?ヘルプ!

4

1 に答える 1

2

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

ただし、SetLanguage()プロシージャが以前に呼び出された場合はMenuSalesNote_Click()、すぐにインスタンス化することをお勧めします。または、代わりにここでインスタンス化することもできます。

Private Sub SetLanguage()
  SNFrm = New SalesNote    
  SNFrm.Text = My.Resources....
  SNFrm.AcceptBtn.Text = My.Resources...
End Sub

ただし、インスタンス化はMenuSalesNote_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
于 2013-11-09T03:31:41.910 に答える