0

在第一个表格上,我有:

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

因此,在 secondForm 上,我需要相同的 DataSet(dsUni) 来从更改的 dgv02 中写入 XML。
但是,我得到了错误:
当前上下文中不存在名称“dsUni”
请给我一个解决方案。

4

2 回答 2

1

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

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

于 2012-06-11T21:26:02.633 回答
1

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

巨额的技术债务正等着发生。

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

创建一个小类,例如

public class MyData()
{
   public Dataset MyDataset {get; private set;}

   // add constructor and all methods related to the dataset here. 
}

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

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

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

于 2012-06-11T21:32:26.773 回答