|
■No21826 (るな さん) に返信
>具体的に
こんな感じでしょうか。
サンプルということで、話題の中心になっている箇所以外は省略します。
一部を除き、コメントは先ほどのリンク先のを使用しています。
<<親フォーム:Form1:DataGridView×1、Form2を呼ぶためのButton×1>>
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// 親Formは子Formに自身の参照を渡す
new Form2(this).Show();
}
// 親FormにDataGridをRefreshする公開メソッドを定義
public void DgvRefresh()
{
this.dataGridView1.Refresh();
// ↓これはこのメソッドが機能したことを確認するため
MessageBox.Show("リフレッシュしました。");
}
}
<<子フォーム:Form2:メソッド起動用Button×1>>
public Form2()
{
InitializeComponent();
}
// 子Formに親Formのインスタンスを受け取る口を定義(コンストラクタ引数や公開プロパティなど)
// ↑今回はコンストラクタの引数つきオーバーロードを作成しました
private Form1 parentF1; // ←Form2全体でForm1のインスタンスを使えるようにするための変数
public Form2(Form1 parent)
{
InitializeComponent(); // ←これを消すとForm2自身が表示されなくなるので消してはいけません
parentF1 = parent;
}
private void button1_Click(object sender, EventArgs e)
{
// 子Formは親FormのDataGirdをRefreshするメソッドを起動する
parentF1.DgvRefresh();
}
|