在两个winforms之间共享一个变量

我有一个winforms应用程序。

我在一个表单上有一个文本框(调用F1),当在此表单上单击一个按钮(调用F2)时,它会启动另一个表单。

在F2上,我想通过文本框设置一个字符串(并将其保存到类中的变量),然后当我关闭此表单时,该字符串将出现在F1中的标签中。

所以我基本上在两种forms之间共享变量。 但是,我无法使其正常工作。 这段代码看起来怎么样?

我会为form2添加一个新属性。 说这是电话号码。 然后我将一个朋友属性m_phone()作为字符串添加到表单2.显示form2的实例但在关闭它之前,您可以在form1的代码中引用属性m_phone。

这是Matthew Abbott解决方案的另一个间接层面。 它不会将form2 UI控件暴露给form1。

编辑

例如:

public string StoredText { get; private set; } 

在集合中你可以引用你的UI控件,比如返回textBox1.text。 使用get从早期加载设置文本框值。

和:

 public string GetSomeValue() { var form = new F2(); form.ShowDialog(); return form.StoredText; } 

只需确保在窗体关闭之前填充(或不适用) StoredText

您是否将第二个表单显示为对话框,这可能是最好的方法。 如果可以避免执行共享变量,则可以执行以下操作:

 public string GetSomeValue() { var form = new F2(); form.ShowDialog(); return form.TextBox1.Text; } 

并在代码中调用:

 Label1.Text = GetSomeValue(); 

这可能不是最有效的接近方式,但您可以创建一个名为DB(数据库)的类。 在这个类中,创建变量

public static bool test or public static bool[] test = new bool[5];

在其他表单中,您只需创建一个实例即可。 DB db = new DB(); 然后使用db.test = true/false获取信息。 这就是我一直在做的事情,而且效果很好。

对不起,我只是迟到了一年。