【发布时间】:2017-05-21 08:35:21
【问题描述】:
在 Form1 中,我有一个 dataGridView,在 Form2 中,我有一个按钮和文本框,我从中插入数据。
问题是如何将Form2中文本框的数据添加到Form1中的dataGridView中?
我知道有很多方法,但我正在寻找一种易于理解的方法。 这是我在Form2中尝试过的
public partial class Form2 : Form
{
SqlConnection con;
string queryString;
SqlCommand com;
void afis()
{
string cons = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Depou.mdf;Integrated Security=True;User Instance=True";
con = new SqlConnection(cons);
queryString = "select * FROM Trenuri";
com = new SqlCommand(queryString, con);
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(com);
da.Fill(dt);
dataGridView1.DataSource = dt;
}
private void button1_Click(object sender, EventArgs e)
{
con.Open();
queryString = "insert into Trenuri(ID) values(" + textBox1.Text + ")";
com = new SqlCommand(queryString, con);
com.ExecuteNonQuery();
con.Close();
afis();
this.Close();
}
}
(出现"dataGridView does not exist in the current context"错误,表格在Form1中)。
【问题讨论】:
-
这通常可以在 Form2 中引发事件来解决。 Form1 实例,在显示Form2 之前订阅事件,并在Form2 发生相关动作(即button_click 和新数据的相对插入)时收到通知。此时第一个表单可以随心所欲地更新其网格。
-
我如何订阅活动?我是初学者,所以我不知道很多事情。
-
你做错了事。
Form1应该将Form2显示为模态对话框,即调用其ShowDialog方法。如果提供了数据,ShowDialog应该返回OK,否则返回Cancel。如果是OK,Form1应该从Form2的属性中获取新数据,其中Form2已使数据可用。Form1应该首先将数据添加到网格中,然后将更改保存回数据库。Form2甚至不应该知道Form1或数据库存在。
标签: c# sql-server vb.net winforms datagridview