【问题标题】:Shared DataSet Over Multiple Forms C#多个表单上的共享数据集 C#
【发布时间】:2012-07-22 23:49:15
【问题描述】:

所以我正在处理一个数据库项目,在我的第一种形式中,我有访问我的数据源的 sql 连接命令。我还创建了一个数据集,这都在我的显示表单中

显示表单用于显示数据库,我添加了一个添加记录的按钮,因此当我单击添加记录时,它将转到添加表单,我可以在其中填写详细信息以创建新联系人。然后返回第一个表单以显示新创建的联系人和所有其他联系人。

但是我遇到了一些问题,因为数据集需要与显示表单中的数据集相同。

如何使我的所有表单中的数据集都相同?

更新:

所以我所做的就是在我的 Program.cs 中创建了对象......并将它们设为公共静态。

public static DataSet ds = new DataSet();

所以在我的 addcontact 表单中我可以这样称呼它......

Program.ds.Clear();

与我的 dataadaptor/bindingsource 和 sql 连接相同。这样可以吗?

【问题讨论】:

  • 这不是我的作业。

标签: c# dataset


【解决方案1】:

创建一个数据集类,通过构造函数向每个表单添加传递.. “Class = Class”是一个参考......而不是副本。 (DataSet 是一个类...)

public partial class Form1 : Form
{
DataSet _dataset;

public Form1(DataSet dataSet)
{
    _dataset = dataset;
    InitializeComponent();
}
//..

public partial class Form2 : Form
{
DataSet _dataset;

public Form2(DataSet dataSet)
{
    _dataset = dataset;
    InitializeComponent();
}
//..


static class Program
{
    static void Main()
    {
        DataSet DS = new DataSet();

        Application.Run(new Form1(DS));
    }
}

【讨论】:

    【解决方案2】:

    嗯,你有几个概念选择。您似乎正在考虑将数据集的访问权限授予子表单,这当然是您可以做的,但在我看来,子表单向父表单提供单个记录的信息是有意义的。子表单不需要知道有关数据集或所有其他记录的任何信息。

    一般来说,您应该尽量限制信息,使其仅在需要时可用;您将减少这种错误的可能性。只是使数据集是一个全局变量,这是一个全局变量,这就是使它公开和静态正在做的事情。通过这样做,您不仅可以向子表单提供整组数据(并允许对其进行修改),而且还可以从整个程序的任何位置读取或修改数据。那只是自找麻烦。

    一般想法可能会看起来像这样:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 childForm = new Form2();
            childForm.ShowDialog();
            string name = childForm.Name;
            string value = childForm.SomeOtherValue;
            //you can stick these properties in your dataset here.
        }
    }
    
    public partial class Form2 : Form
    {
        private TextBox textbox1;
        public Form2()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }
    
        public string Name { get { return textbox1.Text; } }
        public string SomeOtherValue { get { return "12345"; } }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      • 2021-05-05
      相关资源
      最近更新 更多