在C#中以不同形式共享数据集

时间:2014-02-07 15:44:42

标签: c# winforms binding dataset

我创建了一个包含多个表的DataSet。我在一个表单上使用了几个表,然后在另外两个表单上使用了另外两个表。当我尝试绑定数据时,我无法弄清楚如何让所有3个表单引用相同的DataSet对象。在界面(Visual Studio Express 2013)中,我可以从Project Data Sources列表中选择并获取我的MainDataSet类,然后选择我想要的任何表。但是,如果我这样做,我会得到一个新对象。其他任何选项似乎都不允许我选择已存在的对象。我以为我曾经看过一个从某个地方选择我的MainDataSet对象的选项,但我目前没有看到那个选项,即便如此,它也不允许我选择一个表。

我知道我可以仔细查看绑定代码并弄清楚如何使其工作,但由于某些代码在Designer文件中,我无法对其进行修改,因此如果我能做到这一点似乎是最好的这样做会取代它对新绑定的作用。似乎我不应该这样做。有一种方法可以在Visual Studio GUI中执行此操作。

2 个答案:

答案 0 :(得分:1)

您应该在设计器中创建BindingSource,然后将其源设置为设计器中的DataSet。

然后,您可以更改表单的构造函数,将BindingSource的源设置为共享数据集。

答案 1 :(得分:1)

根据SLaks的建议,这就是我所做的。

  1. 我将BindingSource拖到表单上,并将其命名为sharedDataSource
  2. BindingSource的属性中,我在项目数据源标题下按选定的DataSource类设置了MyDataSet。我相信这创建了DataSource对象并将其绑定到BindingSource
  3. 在设计器中,我选择了DataGridView对象,然后选择了相应的表格,为sharedDataSource对象选择了数据源。
  4. 对于第二种形式的DataGridView,我选择了其他数据来源 - >项目数据来源 - > MyDataSet
  5. 我为第二种形式创建了一个构造函数,它将MyDataSet个对象作为参数。在构造函数中,我将SomethingOrOtherBindingSource.DataSourcemainDataSet都设置为参数。我认为前者是必需的,但只有在你的代码中引用后者时才需要后者。
  6. 当我创建第二个表单(从第一个表单)时,我将sharedDataSource传递给构造函数。
  7. 因此,在设计器中,数据源绑定到网格,您可以使用设计器执行您需要的任何操作(例如,更改列大小等),但是当程序运行时,数据源将更改为是共享的。它似乎有效。