0

如何从其他主窗体中读取数据,例如在辅助窗体中使用的简单文本?

我使用主窗体中的公共变量进行分配,但是当我调用主窗体时,该变量为 NULL。

4

2 回答 2

0

将值传递给另一种形式的方法有很多,一种是将其传递给constructor被调用形式的 ,然后将其传递给local/private property

假设你在Form1并且你打电话Form2

 Form2 frmCalled = new Form2("Pass this value");

你的constructorForm2现在就会拥有这个

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

另一种方法是使用父窗体中的staticandpublic属性,然后从辅助窗体或被调用窗体中调用它。假设在您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);
    }
于 2013-06-01T05:43:51.003 回答
0

为此,您可以使用几种方法。其中之一(可能不是很好的做法,但我不知道这些数据的其他用途。

首先在 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 实例的所有公共属性/方法

于 2013-06-01T05:47:58.203 回答