更新datagridview仅适用于具有(object sender,EventArgs e)参数的函数

时间:2014-05-12 11:26:02

标签: c# datagridview

我正在使用DataGridView编写此数据库,并创建了第二个表单,可以将新数据输入到我的本地数据库表中。一切正常但数据网格视图中的数据未更新。所以我在我的两个表中创建了另一个button_3和函数TableAdapter.Fill,当按下这个按钮时,datagridview就会更新。现在我想要的是在我按下form2上的写入按钮后更新DataGridView,以便在form2关闭后立即填充新数据,但到目前为止没有任何工作。

Form1:

    private void button2_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Show();
    }



    public void button3_Click(object sender, EventArgs e)
    {  
        this.carsTableAdapter.Fill(this.databaseDataSet1.Cars);
        this.driversTableAdapter.Fill(this.databaseDataSet1.Drivers);       
    }

窗体2

    private void Form2_Load(object sender, EventArgs e)
    {    
        this.carsTableAdapter.Fill(this.databaseDataSet1.Cars);    
        this.driversTableAdapter.Fill(this.databaseDataSet1.Drivers);
        this.carsBindingSource.AddNew();
        this.driversBindingSource.AddNew();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.Validate();
        this.carsBindingSource.EndEdit();
        this.driversBindingSource.EndEdit();
        this.tableAdapterManager.UpdateAll(this.databaseDataSet1);
        this.Close();
        Form1 form1 = new Form1();
        form1.button3_Click(this, new EventArgs());
    }

基本上我的问题是如何用form2调用form2中的button3_Click事件,因为在没有参数的函数中调用2个TableAdapter.Fill行不起作用。

1 个答案:

答案 0 :(得分:0)

Form2显示为模式对话框,这将阻止代码运行后直到表单关闭。

然后在显示表单后将逻辑从button3_Click移到右边,如下所示:

private void button2_Click(object sender, EventArgs e)
{
    using (Form2 form2 = new Form2())
        form2.ShowDialog();

    this.carsTableAdapter.Fill(this.databaseDataSet1.Cars);
    this.driversTableAdapter.Fill(this.databaseDataSet1.Drivers);       
}

从第二个表单上的button1_Click中删除以下代码。它无论如何都没有做任何有用的事情,因为你正在创建一个Form1的新实例,它与显示给用户的当前实例无关。

Form1 form1 = new Form1();
form1.button3_Click(this, new EventArgs());