如何从其他主窗体中读取数据,例如在辅助窗体中使用的简单文本?
我使用主窗体中的公共变量进行分配,但是当我调用主窗体时,该变量为 NULL。
将值传递给另一种形式的方法有很多,一种是将其传递给constructor
被调用形式的 ,然后将其传递给local/private property
。
假设你在Form1
并且你打电话Form2
:
Form2 frmCalled = new Form2("Pass this value");
你的constructor
人Form2
现在就会拥有这个
public Form2(String val)
{
InitializeComponent();
this.passval = val;
}
这意味着你有一个像这样的property
名字passval
:
private string passval { get; set; }
所以,如果你想使用它,那么你现在可以通过简单地调用属性来使用它。例如,如果单击按钮Form2
并且您想现在分配该值,那么您将拥有:
private void button1_Click(object sender, EventArgs e)
{
String receivedValue;
receivedValue = passval;
}
另一种方法是使用父窗体中的static
andpublic
属性,然后从辅助窗体或被调用窗体中调用它。假设在您Form1
的表单或父表单中,您将声明如下:
public static string fromParentForm { get; set; }
假设您正在调用Form2
或被调用的表单,您将这样做:
Form2 frmCalled = new Form2();
fromParentForm = "Parent Form Value here"; // Put value first in your static property
frmCalled.Show();
然后Form2
可以访问类似的值或属性Parent Form
:
private void button1_Click(object sender, EventArgs e)
{
// Value from Parent form static property could be access anywhere in the form
MessageBox.Show(Form1.fromParentForm);
}
为此,您可以使用几种方法。其中之一(可能不是很好的做法,但我不知道这些数据的其他用途。
首先在 SecondaryForm 中创建一个保持 MainForm 引用的变量:
Private MainForm mainForm;
然后创建Secondary form的构造函数,作为main form的参数引用
Public SecondaryForm(MainForm mainForm)
{
this.mainForm = mainForm;
}
然后,当您打开一个辅助表单(我假设您从 MainForm 打开它)时,使用您的新构造函数创建一个 SecondaryForm 的实例:
//somewhere in MainForm
SecondaryForm secondaryForm = new SecondaryForm(this);
secondaryForm.Show() //or ShowDialog()
在 SecondaryForm 的内部代码之后,您可以使用 MainForm 实例的所有公共属性/方法