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"这个名字在当前上下文
中不存在请给我一个解决方案。
不要这样做,它只是要求它。
巨额技术债务等待发生。
有几种方法可以做得更好,但你可以在此基础上进行构建。
创建一个小类,例如
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
的新变量,不要忘记用您想要的数据加载它,因为它一开始会是空的。