c# 多表单数据集

本文关键字:数据集 表单 | 更新日期: 2023-09-27 18:37:01

在第一种形式上,我有:

var dsUni = new DataSet();
dsUni.ReadXml(pathDesc);
frm02.dgv02.DataSource = dsUni.Tables[0];
frm02.ShowDialog();
dsUni.WriteXml(pathDesc); //this line is in the frm02.ClosingEvent

因此,在第二个表单上,我需要相同的数据集(dsUni)来从更改的dgv02中写入XML。
但是,我得到了错误:
"dsUni"这个名字在当前上下文
中不存在请给我一个解决方案。

c# 多表单数据集

不要这样做,它只是要求它。

巨额技术债务等待发生。

有几种方法可以做得更好,但你可以在此基础上进行构建。

创建一个小类,例如

public class MyData()
{
   public Dataset MyDataset {get; private set;}
   // add constructor and all methods related to the dataset here. 
}

然后只需在 Form1 中创建一个,执行您必须执行的操作并将其作为属性或在构造函数中传递给 form2。

如果它是常见的并且不是完全微不足道的,那么创建一个共同的东西,将所有与之相关的方法放在那里,然后使用它。一旦你开始使用form2取决于form1的动作,你不妨节省能量,尽可能用力地在你的左鼻孔里塞一个biro,头痛会相似。

界面会更好,但这是下一课。

错误告诉您

第二个表单没有定义名为dsUni的变量。您需要定义它,例如var dsUni = new DataSet();在第一种形式上所做的那样。虽然您通过行frm02.dgv02.DataSource = dsUni.Tables[0];传递了数据本身,但名为 dsUni 的变量是 form1 的局部变量,因此 form2 不知道它。如果要以 dsUni 的名称访问该数据集,则必须公开它,以便 form2 可以直接访问它,或者在 form2 上以该名称创建一个新的局部变量,并用您想要的数据加载它(非常低效,除非您只是使用指向 form1 的 dsUni 的指针)。

如果您在 form2 上创建了一个名为 dsUni 的新变量,不要忘记用您想要的数据加载它,因为它一开始会是空的。