我在Form1.Designer.cs
中有9个按钮,我想在另一个类Puzzle.cs
中访问它们,因为稍后我需要修改模型类中的按钮更改。下面的代码是我尝试的。
private Button[,] buttons = new Button[3, 3]
{ { Form1.button1, Form1.button2, Form1.button3 },
{ Form1.button4, Form1.button5, Form1.button6 },
{ Form1.button7, Form1.button8, Form1.button9 } };
它失败,因为按钮的修饰符不是静态的。我将它们更改为静态类型,但这会导致按钮出错。 任何人都可以提出一些建议吗?
答案 0 :(得分:2)
您需要引用Form1
类的实例。如果它被称为form
,则您可以访问form.button1
之类的按钮。
但我不确定从另一个类访问该表单的按钮是一个很好的设计。
答案 1 :(得分:0)
为了正确编译,您需要进行以下更改:
public partial class Puzzle : Form
{
private Button[,] buttons;
public Puzzle(Form1 form1)
{
buttons = new Button[,]
{
{ form1.Button1, form1.Button2, form1.Button3, },
{ form1.Button4, form1.Button5, form1.Button6, },
{ form1.Button7, form1.Button8, form1.Button9, },
}
};
}
这里的想法是Form1是一个类,而不是一个类的实例 ......一个类就像一个房子的蓝图,一个房子就像一个实例< / em>那个蓝图。
要将家具送出家门,您首先必须实例化并初始化该房屋(如果您愿意,可以构建),然后访问房屋的家具实例。 / p>
在这种情况下,您需要实例化 新 Form1,然后将其传递给Puzzle表单的构造函数。
Form1 myForm = new Form1();
Puzzle myPuzzle = new Puzzle(myForm);
现在,Puzzle可以访问Form1按钮的实例。
注意:强>
您可以通过查看解决方案的Program.cs文件找到该程序的Form1实例。