我有一个我在Form2中创建的对象(主窗体是Form1)。当我在Form2中为对象分配属性时,我希望它可以在Form1中使用。
该对象在Form2中创建
public partial class Form2 : Form
private List<POI> POIs_3D;
public Form2()
{
InitializeComponent();
POIs_3D = new List<POI>();
}
然后我为列表对象添加一些值,并希望它在Form1中可用。
我知道这可能很简单,但我无法弄明白......
编辑:
这是打开Form2的代码:
private void btn_3d_Click(object sender, EventArgs e)
{
Form formulario = new Form2();
formulario.Show();
}
答案 0 :(得分:1)
有很多方法可以做到这一点
1)在Form1中声明对象。创建时将其传递给Form2。让Form2设置值。
2)在Form2中创建一个property / variable内部,并让Form1读取该属性。如果你想在结束Form2时得到结果,这可能有点复杂,因为你必须从Form2调用Form1中的方法才能获得值。
3)在Form1中创建一个Property / Variable内部,并让Form2设置该值。这要求Form2知道Form1的实例。您可以在显示时在Form2的Owner属性中传递它。 Form2.Show(this)
答案 1 :(得分:0)
在Form2
中,更改此内容:
private List<POI> POIs_3D;
到此:
public List<POI> POIs_3D { get; private set; }
现在您可以在Form2
Form1
的实例上访问它了。 private set;
表示没有其他人可以实际设置该值。
答案 2 :(得分:0)
创建List POIs_3D的公共属性
public partial class Form2 : Form
private List<POI> pOIs_3D;
public List<POI> POIs_3D
{
get { return pOIs_3D; }
set { pOIs_3D = value; }
}
public Form2()
{
InitializeComponent();
POIs_3D = new List<POI>();
}
在Visual Studio中:
<强>更新强>
您可以像这样访问该媒体资源:
public partial class Form1 : Form
{
private Form2 form2;
public Form1()
{
InitializeComponent();
form2 = new Form2();
List<POI> myList = form2.POIs_3D; //Access the property of Form2
}
}
答案 3 :(得分:0)
为什么不重载Form2的构造函数(我猜是从Form1代码创建)来获取在Form1中创建的对象。
public Form2(Object data)
{
this.dataObject=data;
InitializeComponent();
}
//in Form1
new Form2(myDataObject);