C# “自动删除”按钮仅在第二次单击后工作。为什么?

C# “自动删除”按钮仅在第二次单击后工作。为什么?,c#,winforms,controls,C#,Winforms,Controls,我制作了一个按钮,它应该会自动删除,但它给了我一个意想不到的结果:第一次单击它会执行所有操作,但不会自动删除,第二次单击它会执行所有操作,包括自动删除。我想知道这方面的解释,以及如何让它在第一次点击时自动删除。 作为self-remove,我指的是MainForm.Controls.remove(开始按钮) 控制台输出: Clicked Clicked 问题出在我的代码中。有一个空白创建了一个按钮,它被错误地调用了两次。所以有两个按钮 CreateButton() CreateButton()

我制作了一个按钮,它应该会自动删除,但它给了我一个意想不到的结果:第一次单击它会执行所有操作,但不会自动删除,第二次单击它会执行所有操作,包括自动删除。我想知道这方面的解释,以及如何让它在第一次点击时自动删除。 作为self-remove,我指的是
MainForm.Controls.remove(开始按钮)

控制台输出:

Clicked
Clicked

问题出在我的代码中。有一个空白创建了一个按钮,它被错误地调用了两次。所以有两个按钮

CreateButton()
CreateButton()
Void CreateButton()
{
        StartButton.Location = new Point(132, 35);
        StartButton.Name = "StartButton";
        StartButton.Size = new Size(85, 37);
        StartButton.Text = "Start";
        StartButton.Click += new EventHandler(StartButton_Click);
        void StartButton_Click(object sender, EventArgs e)
        {
            MainForm.Controls.Remove(StartButton);
            Console.WriteLine("Clicked");
        }
}

问题已解决。

无法以干净的形式重现问题。考虑发布A。目前,它不是
MainForm
StartButton
所指向的内容。一定是代码中的其他内容阻止了表单刷新。你的表格里还有什么?任何其他可能破坏它的事件处理程序或逻辑?你能在空白表单上的一个按钮的情况下复制吗?@Baldrick是的,它在空白表单上工作,然后这就是我代码中的其他内容。不过,你应该处理,而不是删除…:)
CreateButton()
CreateButton()
Void CreateButton()
{
        StartButton.Location = new Point(132, 35);
        StartButton.Name = "StartButton";
        StartButton.Size = new Size(85, 37);
        StartButton.Text = "Start";
        StartButton.Click += new EventHandler(StartButton_Click);
        void StartButton_Click(object sender, EventArgs e)
        {
            MainForm.Controls.Remove(StartButton);
            Console.WriteLine("Clicked");
        }
}