类变量不存储新值

时间:2016-04-25 18:34:22

标签: c# winforms

通过一个表单调用类的设置值时出现奇怪的输出,但是从另一个表单中检索另一个表单时,我从同一个类中检索时得到不同的值。

我知道我得到一个奇怪的输出的原因:我有两个表格和一个类。当表单1打开表单2的对话框时,它会打开。然后在form2中,我调用一个类方法并将其属性设置为true

退出表单2后,表单1尝试检索表单2设置的值,它似乎有false而不是true。有解决方案吗?

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.ShowDialog();
        Class1 c1 = new Class1();
        textBox1.Enabled = c1.getIsEnabled();
    }


    public Form2()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Class1 c1 = new Class1();
        c1.setIsEnabled(true);
        this.Close();
    }

    class Class1
    {
        Boolean isEnabled;

        public void setIsEnabled(Boolean isEnabled)
        {
             this.isEnabled = isEnabled;
        }

        public Boolean getIsEnabled()
        {
             return this.isEnabled;
        }  
     }

1 个答案:

答案 0 :(得分:1)

您需要在表单之间共享同一个类实例。

您在Form1中创建一个新实例,然后在Form2中创建一个新实例。这是同一类的两个不同实例。您已在Form1中的实例上设置布尔值,并且您已在Form2的实例中设置布尔值。

史蒂夫指出。你真的需要调查OO。