winforms 为什么Form1.Controls会给予CS120错误?

ulydmbyx  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(127)

我想通过按钮动态更新文本框。我创建了这个for循环:

public void add_players_Click(object sender, EventArgs e) 
        {
            if (enter_name_space.Text == "")
            {
                messagebox_1 hide = new messagebox_1();
                hide.Show();
            }
            else
            {
                for (int i = 0; i < 2;)
                {
                    TextBox textBox = new TextBox();
                    textBox.Text = "Hi";
                    textBox.Name = "textBox" + i.ToString();
                    Form1.Controls.Add(enter_name_space);
                    textBox.Location = new Point(0, 0);
                }
            }
        }

但随后出现错误“CS0120:“Form1.Controls”上出现的非静态字段、方法或属性”“需要对象引用。这是为什么?如何修复此问题?

vdgimpew

vdgimpew1#

您需要创建对象的示例。“object”是Form1。
在Form1中:

public static Form1 instance;
public Form1()
{
    InitializeComponent();
    instance = this;
}

现在,无论何时要从任何其他窗体或类访问Form1中的控件,都需要执行以下操作:

Form1.instance...

因此,在Form2(或其他形式)中:

public void add_players_Click(object sender, EventArgs e) 
{
    if (enter_name_space.Text == "")
    {
        messagebox_1 hide = new messagebox_1();
        hide.Show();
    }
    else
    {
        for (int i = 0; i < 2;)
        {
            TextBox textBox = new TextBox();
            textBox.Text = "Hi";
            textBox.Name = "textBox" + i.ToString();
            textBox.Location = new Point(0, 0);
            Form1.instance.Controls.Add(textBox);
        }
    }
}

相关问题