我正在尝试为学校完成一个项目,某些东西不能按我想要的方式工作。我在互联网上查了一下,我使用了那些方法但它仍然不起作用。这是我的代码:
表单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());
}
有人能帮助我吗?谢谢!
答案 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)
{
}