将值从对话框表单传递到主表单

时间:2011-05-17 09:55:15

标签: c# forms dialog

  

可能重复:
  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
}

4 个答案:

答案 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;