0

Form2別のフォーム( )でレコードを挿入または更新するときに、 DataGridViewonは各操作の後にForm1自動的に更新(呼び出し)するか、できればすべての変更操作が完了するまで待機し、フォームの終了イベントをすべての変更で更新する必要があります。btnRefreshDataGridViewForm2

私はVB.NETでこれが達成されると信じていますがForm1.DataGridView.Refresh、C#ではわかりません。DataGridViewプロパティの使用に参照Form1を渡すように言われましForm2たが、C#を初めて使用するため、その方法がわかりませんでした。この問題を解決するにはどうすればよいですか?

私の更新ボタンコード:

private void btnRefresh_Click(object sender, EventArgs e)
{
    GVThesis.DataSource = thesisRepository.GetThesis();
    GVThesis.Refresh();
}
4

1 に答える 1

2

最初に、更新コードを独自のメソッドにラップし、次のようにクリックイベントハンドラーメソッドから呼び出します。

    private void btnRefresh_Click(object sender, EventArgs e) 
    { 
        this.RefreshData();
    }

    public void RefreshData()
    {
        GVThesis.DataSource = thesisRepository.GetThesis(); 
        GVThesis.Refresh(); 
    }

次に、Form1から新しいフォーム(Form2)をインスタンス化して起動すると仮定して、Form2のコードに移動し、Form1への参照を受け入れる新しいコンストラクターオーバーロードを作成し、それをプライベート変数に格納します。 :

public partial class Form2 : Form
{
    private Form1 frm1;

    public Form2()
    {
        InitializeComponent();
    }

    public Form2(Form1 otherForm)
    {
        InitializeComponent();
        this.frm1 = otherForm;
    }
}

次に、次のように、Form2の好きな場所から「更新」を呼び出すことができます。

this.frm1.RefreshData();


編集:

小さなサンプルを作成しましたが、ここにアップロードすることはできません...しかし、VSでのプログラム自体のスクリーンショットと、それを実行して関数を実行した結果のスクリーンショットがあります...うまくいけば、ヘルプ。

プログラム(小さすぎるように見える場合はビューをズームします) VS2010のプログラム


結果: Form2から呼び出されたForm1の関数

于 2012-09-18T02:44:58.037 に答える