可能重复:
How do you pass an object from form1 to form2 and back to form1?
我习惯于在窗体之间传递变量,只需将它们作为参数传递即可。
现在我有一个已经打开的表单(我们称之为FormMain
),另一个表单应该像对话框一样(FormTask
)。在填写FormTask
上的信息之前,用户无法与主表单进行交互。 FormTask
只包含一个文本框,此文本框的值应返回FormMain
,并作为变量跟踪。 FormTask
需要参数exerciseType
。当FormTask
打开时,它会检查此参数的值并相应地设置文本框的默认值。这已经有效,我对如何将我的字符串值返回到已经打开的MainForm
感到有点无能为力。
这些对话框似乎只能返回DialogResults
,这不是我所追求的。我也没有太多经验,我宁愿避免摸索自己制作自己的自定义对话框。
FormMain:
FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoker.ShowDialog();
FormTask:
private void button1_Click(object sender, EventArgs e)
{
string opgave = textBoxOpgave.Text;
// return string value to MainForm here
}
答案 0 :(得分:32)
在FormTask中创建公共属性
public string Opgave { get {return textBoxOpgave.Text;}}
在ShowDialog();
之后检查它FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoer.ShowDialog();
formOpgaveInvoer.Opgave; // here it is
答案 1 :(得分:1)
最简单的方法是在表单类中添加一个公共属性以返回字符串。
public string opgave
{
get;
private set;
}
在对话框关闭时分配给此属性,然后从调用ShowDialog()
的代码中读取属性:
private void button1_Click(object sender, EventArgs e)
{
opgave = textBoxOpgave.Text;
}
...
FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoker.ShowDialog();
DoSomething(formTask.opgave);
答案 2 :(得分:1)
表单只是普通的类。这意味着,您可以在其中创建属性 所以:创建一个属性并为其赋值。
答案 3 :(得分:1)
将属性添加到FormTask
,例如String1
,例如
public string String1 {get; set;}
在button1_Click
中设置String1值,例如
您可以在MainForm中访问该属性,如
FormTask formTask = new FormTask(exerciseType);
formOpgaveInvoer.ShowDialog();
string str = formTask.String1;