2010-11-11 66 views
0

我有2个GUI的WinForms程序。我有一个GUI工作,并使用在Winforms C#中的GUI之间传递变量的最佳方式是什么?

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

我用这取决于我需要得到ShowDialog()Show()打开另一个GUI。当我完成时,我想通过结果(有时是2个字符串,有时甚至更多)返回Mother GUI,其中称为Child GUI

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

+0

除了具体问题 - 通常避免全局变量,只要你可以。不惜一切代价,但只要你能传递一些东西,就通过它。能够通过方法调用通过您的代码方法调用跟踪值的方式及其修改是非常宝贵的。 – TeaDrivenDev 2010-11-11 18:55:47

回答

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对象上访问它。

+0

如何设置'ChildGui'中的gui.Result? – MadBoy 2010-11-11 18:51:32

+0

我必须说我无法找到this.Result或结果,当做到这一点buttonClick在childWindow?我必须先以某种方式定义房产? – MadBoy 2010-11-11 18:57:31

+0

非常感谢。帮助非常好! – MadBoy 2010-11-11 19:04:49

1

您可以在FormGui类中添加一个属性,该属性包含要在父窗体中使用的结果。

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

0

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

0

通过贝丽答案是足以让你的任务

我的建议简单的方法将属性添加到各种形式的

创建一个新的类System.Windows.Form

public class Form : System.Windows.Forms.Form 
{ 
    //add properties 
} 
扩展它

检查您的表单中的属性

相关问题