如何从Form1.cs访问其他类中的按钮

时间:2011-10-25 01:16:03

标签: c#

我在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 } };

它失败,因为按钮的修饰符不是静态的。我将它们更改为静态类型,但这会导致按钮出错。 任何人都可以提出一些建议吗?

2 个答案:

答案 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实例。