C#DataGridView不显示其他表单上的数据

时间:2018-05-03 15:46:20

标签: c# winforms datagridview

我有两个Windows窗体(Form1Form2)。 Form1有一个按钮(openfrm2)和一个datagridview(dataGridView1)。 Form2有一个文本框(sql_textbox)和一个按钮(button1)。

点击openfrm2打开Form2,然后我在sql_textbox中编写一个SQL查询来查看Postgres数据库中的表格并单击button1应显示dataGridView1中的查询结果。但事实并非如此。

这是我的代码:

Form1中:

public BindingSource bindingSource1 = new BindingSource();

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

窗体2:

private void button1_Click(object sender, EventArgs e)
{
    Form1 frm1 = new Form1();
    frm1.bindingSource1.DataSource = query();
    frm1.dataGridView1.DataSource  = frm1.bindingSource1;
}

DataTable query()
{
    NpgsqlConnectionStringBuilder cnsb = new NpgsqlConnectionStringBuilder();
    cnsb.Database = "postgres";
    cnsb.Username = "postgres";
    cnsb.Password = "root";
    cnsb.Host     = "localhost";
    DataTable dt  = new DataTable();

    using (NpgsqlConnection cnn = new NpgsqlConnection(cnsb.ConnectionString))
    {
        cnn.Open();

        using (NpgsqlCommand cmd = new NpgsqlCommand(sql_textbox.Text, cnn))
        {
            NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql_textbox.Text, cnn);
            da.Fill(dt);
        }
    }
    return dt;
}

我尝试过用类似问题编写的解决方案,但没有任何效果。如果我将数据网格视图添加到Form2,并添加此

dataGridView2.DataSource = frm1.bindingSource1;

button1_Click显示数据,但我需要在Form1上显示。

我该怎么做?

0 个答案:

没有答案