所以我正在开发一个数据库项目,在我的第一个表单中,我有sql连接命令访问我的数据源。我还创建了一个数据集,这是我的displayform
displayform用于显示数据库,我添加了一个按钮来添加记录,所以当我点击添加记录时,它会转到addform,我可以在其中填写创建新联系人的详细信息。然后返回第一个表单以显示新创建的联系人以及所有其他联系人。
但是我遇到了一些问题,因为数据集需要与显示形式的数据集相同。
如何在所有表单中使数据集保持一致?
更新:
所以我所做的就是在我的Program.cs中我已经在那里创建了对象......并使它们成为公共静态的。
public static DataSet ds = new DataSet();
然后在我的addcontact表单中,我可以这样称呼它......
Program.ds.Clear();
与我的dataadaptor / bindingsource和sql连接相同。可以这样做吗?
答案 0 :(得分:3)
创建数据集类通过构造函数向每个表单添加传递。 “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));
}
}
答案 1 :(得分: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"; } }
}