如何将值从一种形式传输到另一种形式?

时间:2012-02-05 04:30:49

标签: c# winforms

我有两张表格。 Form1创建Form2,如下所示:

public partial class Form1 : Form
{
    private void button3_Click(object sender, EventArgs e)
    {
        Form2 AcqForm = new Form2();
        AcqForm.Show();
        string[] ret = AcqForm.fulldate;
        MessageBox.Show(ret[27]);
    }
}


public partial class Form2 : Form
{
    public string[] fulldate; //Created in form 2
    close();              //Need to get this string back on or before close event
}

我该怎么做呢?

3 个答案:

答案 0 :(得分:1)

您需要以第一种形式处理Form2实例的FormClosed事件并访问公共属性。

答案 1 :(得分:0)

使用此代码段,您可以获得一些知识。

Form1

中的

using(Form2 form2 = new Form2()) 
{
  if(form2.ShowDialog() == DialogResult.OK) 
  {
    MessagBox.Show(form2.fulldate);
  }
}

Form2

public partial class Form2 : Form
{
    public string[] fulldate {get; set;} // Create a Property

    void CloseForm()
    {
         fulldate = "valueToReturn";
         DialogResult = DialogResult.OK;
    }
}

答案 2 :(得分:0)

假设您希望button3_Click等到AcqForm关闭才能访问fulldate,您首先必须将AcqForm.Show();更改为AcqForm. ShowDialog();。 (Show()并不等待它关闭。)

对于fulldate字段 - 即使表单关闭后也可以访问它,因为表单仍然存在。 SLaks'关于它是一个'字段'意味着我们对不同类型的变量有不同的名称'。您在课堂上声明的内容(没有getset)称为字段。方法中的变量称为变量'。

如果您仍希望在AcqForm关闭时执行某些操作,请执行以下操作:

在Form1的构造函数中,在AcqForm. ShowDialog();

之前
AcqForm.FormClosing += AcqForm_FormClosing;

在Form1&#39的课程中:

void AcqForm_FormClosing(object sender, FormClosingEventArgs e)
{
    //Whatever will be here will be done when the form is closing.
    //Use 'FormClosed' for doing things AFTER the form has closed.
}