从另一个Form C调用方法#

时间:2017-12-19 11:50:16

标签: c# winforms datagridview

我正在尝试使用数据集将数据从dataGridView保存到数据库。

在我的主要表单Form1中我有这个功能:

public void SaveToDB()
    {
        aSH_PROD_ORDERSTableAdapter.Update(aSH_ORDER_DBDataSet1);
    }

当我在Form1中调用它时,它工作得很好。

然而,当我从From2用它调用它时。

 public void Savestuff()
    {
        form1.SaveToDB();
    }

有例外说:

对象引用未设置为对象的实例。

我也在每种形式中都有这个:

 public partial class Form2 : Form
{
    Form1 form1;

 public partial class Form1 : Form
{
    DateTimePicker oDateTimePicker = new DateTimePicker();
    Form2 resultsForm;

我想要做的就是将Form2中的dataGridView中的数据保存到数据库中。

我觉得这是最好的方法。

任何想法?

4 个答案:

答案 0 :(得分:2)

如果您想使用保存数据的方法,我建议您使用保存方法单独创建

以下只是示例,你需要这样的东西

public class DbCrud
{
   public bool SaveData(DateSet ds)
   {
     //create data adapter object with required connection information
     // and just call save here 
      sqlCnn.Open();
      sqlCmd = new SqlCommand(sql, sqlCnn);
      adapter.SelectCommand = sqlCmd;
      adapter.Update(ds);
   }
}

在form1类

private DbCrud dbCrud;
public form1()
{
 dbCrud =new DbCrud();
  dbCrud.SaveData(ds);
}
表格2中的

private DbCrud dbCrud;
public form2()
{
 dbCrud =new DbCrud();
  dbCrud.SaveData(ds);
}

答案 1 :(得分:0)

创建Form1的对象时,请尝试此操作。

Form1 f1 = new Form1();

在此之后你不应该得到例外。

答案 2 :(得分:0)

从这个观点来看,也许尝试使用Form1的一些静态属性?

答案 3 :(得分:-1)

尝试下一步:

public static void SaveToDB()
    {
        aSH_PROD_ORDERSTableAdapter.Update(aSH_ORDER_DBDataSet1);
    }