在类中创建Controls.Add

时间:2018-08-09 05:59:42

标签: c#

我是C#的新手,有问题。

我创建了一个名为All_Buttons的类,并在其中创建了一个名为create_button1()的方法。

此方法创建一个名为b1的按钮。在该方法的最后,我添加了Controls.Add(b1)。

在类内部,Controls.Add(b1)出现错误,但在类外部使用相同的方法可以正常工作。

有人知道如何解决这个问题吗?

下面是代码,但由于某种原因,只有最后一个方法显示了应有的方式。

namespace WindowsFormsApp8
{
    public partial class Form1 : Form
    {
        class All_Buttons
        {
            void create_button1()
            {
                Button b1 = new Button();
                b1.Size = new Size(50, 50);
                b1.Location = new Point(10, 10);
                b1.Visible = true;
                b1.Text = "Button1";
                //Does not work//
                Control.Add(b1);
            }
        }

        void create_button1()
        {
            Button b1 = new Button();
            b1.Size = new Size(50, 50);
            b1.Location = new Point(10, 10);
            b1.Visible = true;
            b1.Text = "Button1";
            //This works//
            Control.Add(b1);
        }

1 个答案:

答案 0 :(得分:2)

您不能从嵌套类中访问Control。您需要例如通过ctor或Form1的参数将All_Buttons实例传递给create_button1类,以便能够访问它。

    class All_Buttons
    {
        void create_button1(Form1 form)
        {
            Button b1 = new Button();
            b1.Size = new Size(50, 50);
            b1.Location = new Point(10, 10);
            b1.Visible = true;
            b1.Text = "Button1";

            form.Controls.Add(b1);
        }
    }

但是在这种情况下,我建议您重新设计您的结构,因为似乎不需要嵌套类。