从另一种形式获取可更改的Int - C#

时间:2018-03-16 14:26:12

标签: c# winforms int

我正在尝试为学校完成一个项目,某些东西不能按我想要的方式工作。我在互联网上查了一下,我使用了那些方法但它仍然不起作用。这是我的代码:

  
    

表单1

  
private int selected_btns = 0;
ExampleHepler ex = null;

public int GetSelectedButtons
{
    get
    {
        return selected_btns;
    }
}

private void cheese_Click(object sender, EventArgs e)
{
    if (((Control)sender).BackColor == Color.MediumSlateBlue)
    {
        cheese.BackColor = Color.DarkSlateBlue;
        cheese.FlatAppearance.BorderSize = 2;
        selected_btns++;
    }
    else
    {
        cheese.BackColor = Color.MediumSlateBlue;
        cheese.FlatAppearance.BorderSize = 1;
        selected_btns--;
    }
}

private void Form1_Load(object sender, EventArgs e)
{
    ex = new ExampleHelper(this);
}
  
    

表格2

  
MainApp app = null;
public ExampleHelper(MainApp app1)
{
    app1 = app;
    InitializeComponent();
}

private void ExampleHelper_Load(object sender, EventArgs e)
{
    app = new MainApp();
}

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show(app.GetSelectedButtons.ToString());
}

有人能帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您正在ExampleHelper Form_Load事件中创建MainApp的新实例。此外,当您实例化ExampleHelper时,您将实例变量分配给传入的MainApp变量,而不是正确的方式,将实例变量设置为传入的引用。

所以你有MainApp1 - >创建ExampleHelper - >创建MainApp2。 cheeseClicks正在递增和递减原始MainApp实例上的计数器,但在帮助应用程序中,您将从新的未显示的MainApp实例打印计数器。

不要尝试创建新的MainApp实例,并正确分配变量,您应该得到所需的结果。

Form2

MainApp app = null;
public ExampleHelper(MainApp app1)
{
    app = app1; // note the change in order on this line...
    InitializeComponent();
}

private void ExampleHelper_Load(object sender, EventArgs e)
{
}