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

在Winforms C#中,在GUI之间传递变量的最佳方式是什么?,c#,winforms,C#,Winforms,我有两个GUI的WinForms程序。我使用一个GUI并使用 var gui = new FormGui("SomeVar", someOthervar); gui.ShowDialog(); 我使用ShowDialog()或Show()取决于我需要获得什么。完成后,我希望将结果(有时是两个字符串,有时甚至更多)传递回母GUI,该GUI称为子GUI 最好的方法是什么?我正在考虑使用全局变量,但不确定这是否是最佳方法?您可以在FormGui上创建属性,并在表单中设

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

        var gui = new FormGui("SomeVar", someOthervar);
        gui.ShowDialog();
我使用
ShowDialog()
Show()
取决于我需要获得什么。完成后,我希望将结果(有时是两个字符串,有时甚至更多)传递回
母GUI
,该GUI称为
子GUI


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

您可以在
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
对象上访问它。

你可以在
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
对象上访问它。

你可以在
FormGui
类上添加一个属性,其中包含你想要在父表单中使用的结果


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

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


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

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

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

自由的回答就足够您完成任务了

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

创建一个新类,并使用System.Windows.Form对其进行扩展

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

检查表单中的属性

自由的回答就足够完成任务了

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

创建一个新类,并使用System.Windows.Form对其进行扩展

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

检查表单中的属性

如何设置gui。结果来自
ChildGui
?我必须说我找不到这个。在内部按钮中执行此操作时的结果单击childWindow?我必须先定义属性吗?我如何设置gui。结果来自
ChildGui
?我必须说我找不到这个。在内部按钮中执行此操作时的结果单击childWindow?我必须先定义属性吗?除了特定的问题之外-通常尽可能避免全局变量。不是不惜任何代价,但只要你能传递某样东西,就传递它。通过一个方法一个方法地调用代码方法来跟踪值的方式及其修改是非常宝贵的。除了特定的问题之外,通常尽可能避免全局变量。不是不惜任何代价,但只要你能传递某样东西,就传递它。能够通过逐个方法调用的代码方法来跟踪值的方式及其修改是非常宝贵的。