从另一个Form C调用方法#

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从另一个Form C调用方法#相关的知识,希望对你有一定的参考价值。

我试图将数据从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中的数据保存到数据库中。

我认为这将是最好的方法。

有任何想法吗?

答案

如果你想使用方法来保存数据,我建议你使用保存方法单独创建类

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

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);
}
另一答案

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

Form1 f1 = new Form1();

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

另一答案

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

另一答案

尝试下一步:

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

以上是关于从另一个Form C调用方法#的主要内容,如果未能解决你的问题,请参考以下文章

C# 从另一个线程调用 form.show()

使用意图从另一个片段调用一个片段

如何从另一种形式调用多个方法C#

当我从另一个表单调用方法时,控件不会更改颜色或文本

如何从另一个活动中调用片段

如何在将 Tablayout 与 viewpager 一起使用时从另一个片段调用 AsyncTask?