[英]Pass value from parent form to child form?
我正在尝试将父表单中设置的值传递给第二种表单。 我在父表单中创建了一个带有get part的属性。
我不想做这样的事情:
Form2 secondForm = new Form2(value);
这是一个已经存在的表单,我不想每次想要传递值时都继续创建新表单。
您在这里有一些可能性:
从您的第一个表格提供参考作为价值
Form2 secondForm = new Form2(yourForm1);
因此,您可以通过第一个表格中的getter访问。 yourForm1.MyValue;
这似乎有点丑陋。 最好是创建一个接口,该接口保存您的属性,并从您的第一个Form实现。
public interface IValueHolder
{
public int MyValue {get;}
}
public class FirstForm : Form, IValueHolder
{
public int MyValue{get;}
//Do your form stuff
Form2 form = new Form2(this);
}
因此,您的Form2只是采用了接口,并独立于Form1。 此外,您可以在Form2上创建一个属性,您可以从Form1访问该属性。 例如,如果您在Form1中的“属性”发生了变化,那么您也将从Form2中设置值。
public class Form2 : Form
{
public int MyValue{get;set;}
}
public class Form1 : Form
{
private int _myValue;
public int MyValue
{
set
{
if (_myValue != value)
{
form2.MyValue = value;
}
}
}
}
至少您可以使用事件。 此外,您可以在Form2上创建一个属性,该属性包含如上所述的Form1引用或IValueHolder。
希望这可以帮助。
我不确定您将如何在父级中使用Form2
(让它为frmParent
)。 无论如何,您可以执行以下任何步骤:
将子窗体中的属性定义为静态,以便您可以使用Form2.frmProperty
进行访问。
或将属性定义为public,然后通过类实例进行访问,以便只要实例存在就可以通过该实例访问变量。 类似于以下内容:
Form2 secondFormInstance = new Form2();
secondFormInstance.frmProperty = 10;
// at some later points
int childValue = secondFormInstance.frmProperty; // take value from that variable
secondFormInstance.frmProperty++; // update the value
或者,您可以像在问题中指定的那样使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.