我有两个Windows窗体(Form1
和Form2
)。 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
上显示。
我该怎么做?