【问题标题】:Add Table data from another form从另一个表单添加表格数据
【发布时间】: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 和新数据的相对插入)时收到通知。此时第一个表单可以随心所欲地更新其网格。
  • 我如何订阅活动?我是初学者,所以我不知道很多事情。
  • 还有这个来自我自己stackoverflow.com/questions/42871909/…
  • 你做错了事。 Form1 应该将 Form2 显示为模态对话框,即调用其 ShowDialog 方法。如果提供了数据,ShowDialog 应该返回 OK,否则返回 Cancel。如果是OKForm1 应该从Form2 的属性中获取新数据,其中Form2 已使数据可用。 Form1 应该首先将数据添加到网格中,然后将更改保存回数据库。 Form2 甚至不应该知道 Form1 或数据库存在。

标签: c# sql-server vb.net winforms datagridview


【解决方案1】:

有很多方法可以做到这一点,但我建议您使用中介者设计模式。在这里阅读更多关于http://www.dofactory.com/net/mediator-design-pattern 这是非常有趣的事情。

【讨论】:

  • 这不是一个合适的答案。答案应该是独立的,而不是简单地链接到将来可能不存在的另一个页面。此类链接应在 cmets 中提供,而不是答案。
  • @jmcilhinney 好的。下次我会把这个作为评论。 -1 分 :( 呵呵
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 2014-05-17
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多