在另一个表单中使用表单中的值

时间:2013-01-13 18:50:35

标签: c#

我有两种形式:

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();
        }

enter image description here

2 个答案:

答案 0 :(得分:1)

在Form2中创建构造函数,如

private Form1 _obj1;

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

现在,您可以访问form1的所有属性到form2。

创建form1的对象时,可以使用在form2中创建的新构造函数,如

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

无需继承form1

答案 1 :(得分:0)

尝试创建一些中间类,并在Form2Form1的重载构造函数中传递它的实例,如:

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'等。

相关问题