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

时间:2010-08-23 22:23:24

标签: c# winforms

我有一个winforms应用程序。

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

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

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

3 个答案:

答案 0 :(得分:4)

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

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

修改

e.g:

public string StoredText
{
    get;
    private set;
}

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

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

    return form.StoredText;
}

在表单关闭之前,请确保填充StoredText(如果适用,不填写{。}}。

答案 1 :(得分:3)

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

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

    return form.TextBox1.Text;
}

并在代码中调用:

Label1.Text = GetSomeValue();

答案 2 :(得分:0)

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

这样的变量

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

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

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