将bool从一种形式传递到另一种形式(不工作)

时间:2016-07-13 19:33:53

标签: c# boolean

我正处于一个项目的中间,我正试图将一个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。

我读布尔错了吗?

有人可以帮忙。

3 个答案:

答案 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;
}