0
これまでは、子フォームで同じ関数を呼び出せるようにするためにこのコードを使用しました。C#親フォームの2つのメソッドから同じ子フォームのインスタンスへのアクセス
親フォームコード:
FormGame frmGame; // i put this here so that in the second function it doesnt complain about frmGame not being set.
public void CreateGame(string Level) // this function is called first
{
FormGame frmGame = new FormGame(this); // i need both functions to be able to access this instance of the child form
frmGame.SetLevel(Level); // sets the text of a label in the child form
frmGame.Show();
}
public void UpdateGame(string Level) // then this function is called second
{
frmGame.SetLevel(Level); // to update the same label as set in the first method
}
このコードの問題は、はい、それは何らかのエラーが出ていない間に、第2の関数が呼び出されたときに、ちょうどそこに座って、それをデバッグするときにするとき、それは見つける傾けることですfrmGameがnullのように、最初の関数で設定されたFormGameのインスタンス。
私が試みた:
- この
FormGame frmGame =新しいFormGame(本)のように両方の機能外ステートメントを初期化フォーム全体を引っ張ります。
それが実行しているときにエラーを削除し、「これは」関数の内部であることと、その行からそれを除去しないようにdoesntのが、 - に言ったとき、ラベルは、トップ のコードに示されているものに変更はありません
- 持つ
FormGame frmGame =新しいFormGame(この); 両方の関数の一番上の行にあるが、それを更新しようとするたびにフォームを最初のものに戻します。 - 2番目の関数でRefresh()を使用し、変更されても無駄になります。
- といくつかのより多くが、彼らは私が正しいと感じるどのような方法をオフしました。
私の目標は、最初の関数でフォームを作成してラベルを設定し、2番目の関数が新しい文字列で呼び出されたときに、閉じずに同じラベルを更新できるようにすることですオープンフォーム。