我正处于一个项目的中间,我正试图将一个bool从一个表单传递到另一个表单但是任何时候我这样做都不起作用。
表格1
public bool test = false;
private void bluelineToolStripMenuItem_Click(object sender, EventArgs e)
{
this.BackgroundImage = Properties.Resources.Background_Mainframe_Blueline;
test = true;
}
表格2
private void AboutWindow_Load(object sender, EventArgs e)
{
Mainframe main = new Mainframe();
if (main.test == true) //reads test as false rather then true.
{
this.BackgroundImage = Properties.Resources.Background_About_Blueline;
}
}
当第二个表单加载时,将bool读为true,但读取为false。
我读布尔错了吗?
有人可以帮忙。
答案 0 :(得分:1)
是。这是真的。当Form2
加载时,main
表单会初始化。在初始化main.test
中是False
。您必须点击bluelineToolStripMenuItem
表单main
才能将main.test
设置为True
。但if条件在main
形式初始化之后立即检查。
答案 1 :(得分:1)
您需要在创建子表单时传递对父表单的引用,而不是从子表单中实例化新表单。
答案 2 :(得分:1)
通过创建一个名为Variables.cs的新公共类,然后将变量添加到类中并在其他类中调用它们来解决这个问题。
示例:
Variables.cs
public class Variables
{
public static bool test = false;
}
Form1中
private void bluelineToolStripMenuItem_Click(object sender, EventArgs e)
{
Variables.test = true;
}