在Winforms C#中在GUI之间传递变量的最佳方法是什么?

时间:2010-11-11 18:44:58

标签: c# winforms

我有2个GUI的WinForms程序。我使用一个GUI并使用

打开另一个GUI
        var gui = new FormGui("SomeVar", someOthervar);
        gui.ShowDialog();

我使用ShowDialog()Show()取决于我需要获得的内容。当我完成后,我想将结果(有时它是2个字符串,有时甚至更多)传递回调用Mother GUI的{​​{1}}。

最好的方法是什么?我在考虑使用全局变量,但不确定这是否是最佳方法?

4 个答案:

答案 0 :(得分:4)

您可以在FormGui上创建属性并在表单中设置这些属性。完成表单后,您可以从对表单的引用中获取这些属性:

var gui = new FormGui("SomeVar", someOthervar);
gui.ShowDialog();
var result = gui.Result;

编辑:关于您的评论:

假设您的子表单上有一些按钮或用户可以与之交互的内容。或者,如果有关闭按钮,则单击:

private void buttonCloseClick(object sender, EventArgs e)
{
   this.Result = new ResultObject()....
}

编辑#2 关于您的第二条评论:

是的,在FormGui类中,您需要定义一个名为Result的对象:

public partial class FormGui : Form
{
   public ResultObject Result {get;set;}
}

ResultObject只是我正在编造的东西。关键是您可以控制FormGui,因此您可以添加所需的任何属性,然后在FormGui对象上访问它。

答案 1 :(得分:1)

您可以在FormGui类上添加包含要在父表单中使用的结果的属性。

此外,您也可以使用ShowDialog()的结果来传回信息 - 尽管这是DialogResult枚举的有限值。

答案 2 :(得分:0)

您可以使用ShowDialog在子窗口上调用,使用新的公共属性来设置结果,当您关闭对话框时,父GUI应该能够在下一个代码行中看到结果。

答案 3 :(得分:0)

BFree 的答案足以完成您的任务

我建议为所有表单添加属性的简单方法

使用System.Windows.Form

创建一个新类
public class Form : System.Windows.Forms.Form
{
   //add properties
}

检查表单中的属性