前提条件
・メイン画面(MainForm)、親画面(ParentForm)、子画面(ChildForm)という3種類のFormがある。
・メイン画面を閉じると、アプリケーション自体が終了する。
・親画面には、開いた時から、DBから取得したデータが表示されている。
・子画面からは、親画面に表示されている情報に対して変更を加えることができる。
・メイン画面には、親画面を開くボタンを設置している。
・親画面には、子画面を開くボタンを設置している。
実現すること
子画面を閉じると、親画面に表示されているデータが最新のものに更新される。
方法1
DBから最新のデータを取得し直し、DataGridViewのDataSourceを上書きする。
親画面のボタンクリック時
ParentForm.cs
private void OpenChildBtn_Click(object sender, EventArgs e)
{
//子画面を開く
new ChildForm().ShowDialog();
//子画面が閉じられたら、表示データを更新する
DataTable dt = SqlManager.GetData();
dataGridView1.DataSource = dt;
}
方法2
現在開いている画面(ParentFormインスタンス)を閉じ、新しい画面(ParentFormインスタンス)を開く。
この時、先に開いていたParentFormと同じ位置に新しいParentFormを表示することで、
あたかも元の画面が更新されたかのように見せる。
方法1で対応できない場合に使用。
方法1と異なるのは、TextBoxに入力されていた値等もすべて消え、完全に初期状態に戻る点。
親画面のボタンクリック時
ParentForm.cs
private void OpenChildBtn_Click(object sender, EventArgs e)
{
//子画面を開く
new ChildForm().ShowDialog();
//子画面が閉じられたら、自分自身を閉じる
this.Close();
//閉じた自分自身の表示位置(x座標,y座標)を取得する
Point currentLocation = this.Location;
//新しい親画面を開く
ParentForm newParentForm = new ParentForm();
newParentForm.Show();
//新しい親画面を閉じた画面と同じ位置に表示する
newParentForm.Location = currentLocation;
}
以上
↧