0

したがって、データベースプロジェクトで作業している場合、最初の形式では、データソースにアクセスするsql接続コマンドがあります。データセットも作成しました。これはすべて私の表示フォームにあります

displayformはデータベースを表示するために使用されます。レコードを追加するボタンを追加したので、[レコードの追加]をクリックすると、addformに移動し、新しい連絡先を作成するための詳細を入力できます。次に、最初のフォームに戻って、新しく作成された連絡先とその他すべてを表示します。

ただし、データセットは表示フォームのデータセットと同じである必要があるため、少し問題があります。

データセットをすべてのフォームで同じにする方法を教えてください。

アップデート:

つまり、iveが行ったことは私のProgram.cs iveでオブジェクトを作成し、それらをパブリック静的にしました。

public static DataSet ds = new DataSet();

だから私のaddcontactフォームで私はそれをこのように呼ぶことができます...

Program.ds.Clear();

私のdataadaptor/bindingsourceとsql接続と同じです。これで大丈夫ですか?

4

2 に答える 2

3

さて、あなたにはいくつかの概念的なオプションがあります。子フォームにデータセットへのアクセスを許可することを考えているようですが、これは確かにできることですが、私の目には、子フォームが単一レコードの情報を親フォームに提供することは理にかなっています。 。子フォームは、データセットや他のすべてのレコードについて何も知る必要はありません。

一般に、情報を制限して、必要な場所でのみ利用できるようにする必要があります。そうすることで、バグの可能性を減らすことができます。データセットをグローバル変数にするのは悪い習慣です。これは、データセットをパブリックにして静的にすることです。そうすることで、データのセット全体を子フォームに提供するだけでなく(また、データを変更できるようにする)、プログラム全体のどこからでもデータを読み取ったり変更したりできるようになります。それはただ問題を求めているだけです。

一般的な考え方は、次のようになります。

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"; } }
}
于 2012-07-24T16:02:25.040 に答える
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));
    }
}
于 2012-07-24T16:23:08.930 に答える