(希望这不是重复的)
我在同一个项目中有两个表单(FormA,FormB)。我在专用的单独类中使用静态属性初始化这些表单。 FormA中有一个公共变量可以接收文本框字符串。我想从FormB访问该变量,将其内容复制到formB文本框。但它失败了。
class utilities
{
public static FormA formA = new FormA();
public static FormB formB = new FormB();
}
表格A
public partial class FormA : Form
{
//Note : This form is the first that is opened when the program starts
public string textA;
private void formA_Load(object sender, EventArgs e)
{
/*formATextBox.Text recieves its value here using C# random number
generation function*/
textA = formATextBox.Text
/* MessageBox.Show(textA) here confirms that
the text has been copied in the variable */
}
}
表格B
public partial class formB : Form
{
//This form is opened onclick of a button on formA
private void formB_Load(object sender, EventArgs e)
{
formBTextBox.Text = Utilities.formA.textA;
//This line fails i.e. it returns blank in formBTextBox.Text
}
}
答案 0 :(得分:1)
对new FormA();
的调用不会自动触发Form_Load事件。您需要执行formA.Show()
或类似的操作才能开始其初始化和加载循环。
相关,一条建议:
如果您需要将值从一个Form传递到另一个Form,那么使用全局存储位置(例如public static class MyData
,根据需要使用静态属性)可以是更好的解决方案。
原因:当Form关闭时,其所有数据都被清除,但静态类MyData
在应用程序期间保留在内存中,因此您可以随时随地访问它。
答案 1 :(得分:0)
对我的问题有如此多的负面评论。人们贬低而不是试图解决这个问题......
感谢GSP,Peter B和Patrick Hoffman,我意识到我没有访问正确的表格。
应使用 Application.Run(Utilities.formA)
代替默认的Application.Run(new formA())