2

私は以下を持っています(これを読みやすくするために簡略化しています)

ファーストクラス:

Class MainWindow
     Private mFile As myFile 'myFile is a class containing a bunch of stuff

     Sub go()
          dim editFiles as New EditFiles(mFile)
     End Sub
End Class

セカンドクラス:

Public Class EditFiles
    Private mFile As myFile 'myFile is a class containing a bunch of stuff
Sub New(ByRef passedFile As myFile)

    ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.

    mFile = passedFile

End Sub

私がやりたいのは、2番目のクラスでmFileに変更を加えて、最初のクラスのmFileも変更することです。初期化でByRefを渡すことで発生すると思いましたが、明らかにそうではありません。

私が疑問に思っているのは、これを機能させるための適切な方法は何ですか? グローバル変数を作成できることはわかっていますが、2 番目のクラスの mFile が本質的に同じになるように、最初のクラスから mFile のポインターを渡す方法が必要です。

上記のコードを編集して、簡単な例を示していただければ幸いです。

4

3 に答える 3

2

EditFiles オブジェクトに渡す前に、MainWindowの mFile 変数が初期化されていることを確認する必要があります。

また、myFile がクラスの場合、ByRef を渡す必要さえありません。

于 2012-11-20T19:30:55.037 に答える
1

これが私が私の問題を解決した方法です:

 Class MainWindow
 Private  mFile As myFile 'myFile is a class containing a bunch of stuff

 Sub go()
      dim editFiles as New EditFiles(me, mFile)
 End Sub

 sub setMFile(_mfile as myfile)
    me.mfile = _mfile
 End Class

セカンドクラス

Public Class EditFiles
Private mainWindow As mainWindow
Private mFile as myFile
Sub New(ByVal sourceWindow As mainWindow, byVal sourceFile as myFile)

     ' This call is required by the designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.
    mainWindow = sourceWindow
    mFile = sourceFile

end Sub
Sub setFile
    mainWindow.setMFile(mFile)
End Sub
于 2012-11-21T13:32:49.280 に答える