-1

私には2つの形式があります:

form1とform2

Form1にはすべての値があり、Form2にはグラフがあります。

このエラーが発生しないように、Form2内でform1の値を使用するにはどうすればよいですか?

このコードを使用しようとしましたが、機能しませんでした。

Form2の場合:

public partial class Form2 : Form1
    {
        public Form2()
        {
            InitializeComponent();

        }
    }

Form1の場合:

private void graphe_Click(object sender, EventArgs e)
        {
            Form f = new Form2();
            f.ShowDialog();
            Form f2 = new Form1();
            f2.Hide();
        }

ここに画像の説明を入力してください

4

2 に答える 2

1

Form2 のようにコンストラクターを作成します

private Form1 _obj1;

public Form2(Form1 obj1)
{
    _obj1 = obj1;
}

これで、form1 のすべてのプロパティに form2 にアクセスできます。

form1 のオブジェクトを作成している間、form2 のように作成された新しいコンストラクターを使用できます。

Form f = new Form2(this);
f.ShowDialog();

form1 を継承する必要はありません

于 2013-01-13T18:56:23.773 に答える
0

次のように、いくつかの中間クラスを作成し、そのインスタンスを and のオーバーロードされたコンストラクターに渡すForm2ようForm1にしてください。

public partial class Form2 : Form1
{
    public Form2(IList<string> storage) 
        : base(storage)
    {
        InitializeComponent();
    }
}

public partial class Form1 : Form
{
    protected readonly IList<string> _storage ;
    public Form1(IList<string> storage)
    {
        InitializeComponent();
        _storage = storage;
    }
}

利用方法:

var storage = new List<string>();
Form f = new Form2(storage);
f.ShowDialog();
Form f2 = new Form1(storage);
f2.Hide();

ストレージは、単なるList. また、「Form3」などの他のオブジェクト間でも共有できます。

于 2013-01-13T19:02:56.327 に答える