したがって、Form2
それが存在するためには、それを作成するものによって提供される何らかの価値が必要です。その情報がなければ、Form2のインスタンスは存在しないはずです。これは、(そのフォームのプロパティではなく)そのフォームのコンストラクターにある必要があることを示しています。
これは、Form1
あなたの中に次のようなものがあることを意味します:
string someData; //populate based off of user input
Form2 childForm = new Form2(someData);
//then hide current form and show child form
Form2には、おそらくすでにコンストラクターがあります。次のように変更する必要があります。
public Form2(string someData) //TODO give better parameter name
{
someLabel.Text = someData;
}
次に、親フォームに戻る子フォームを処理する必要があります。これに対処するための好ましい方法は、イベントを使用することだと思います。フォームには、FormClosing
添付できるイベントがあります。これにより、子フォームが閉じられたときに親フォームがコードを実行できるようになります。
文字列someData; //ユーザー入力に基づいて入力Form2childForm= new Form2(someData);
childForm.FormClosing += (sendingForm, args) =>
{
this.Show();
bool result = childForm.DidUserAccept;
}
DidUserAccept
ここでは、ユーザーが値を受け入れるか拒否するかについて、子フォームのプロパティを使用しました。Form2でそれを定義する必要があります。
public bool DidUserAccept {get; private set;}
承認/キャンセルのボタンクリックハンドラーでは、それに応じて結果を設定し、フォームを閉じることができます(閉じると、閉じたイベントがトリガーされ、関連するコードが実行されForm1
ます。