我有两种形式:
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();
}
答案 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)
尝试创建一些中间类,并在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'等。