我有一个winforms应用程序。
我在一个表单上有一个文本框(调用F1),当在此表单上单击一个按钮(调用F2)时,它会启动另一个表单。
在F2上,我想通过文本框设置一个字符串(并将其保存到类中的变量),然后当我关闭此表单时,该字符串将出现在F1中的标签中。
所以我基本上在两种形式之间共享变量。但是,我无法让它正常工作。这段代码看起来怎么样?
答案 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 test
或public static bool[] test = new bool[5];
在其他表单中,您只需创建一个实例即可。 DB db = new DB();
然后使用db.test = true/false
获取信息。这就是我一直在做的事情,而且效果很好。
对不起,我只是迟到了一年。