【问题标题】:Self-removal button works only after the second click. Why?自删除按钮仅在第二次单击后才起作用。为什么?
【发布时间】:2018-06-07 13:32:13
【问题描述】:

我制作了一个应该自动删除的按钮,但它给了我一个意想不到的结果:第一次单击它会执行所有操作但不会自动删除,第二次单击它会执行所有操作,包括自动删除。我想知道对此的解释以及如何使其在第一次点击时自动删除。 作为自我删除我的意思是MainForm.Controls.Remove(StartButton);

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");
}

控制台输出:

Clicked
Clicked

【问题讨论】:

  • 无法以干净的形式重现问题。考虑发布minimal reproducible example。目前尚不清楚MainFormStartButton 指向的内容。
  • 必须是代码中阻止刷新表单的其他内容。你的表格中还有什么?任何其他可能破坏它的事件处理程序或逻辑?可以在空白表格上按一个按钮的情况下重现吗?
  • @Baldrick 是的,它适用于空白表单,然后在我的代码中使用其他内容。

标签: c# winforms controls


【解决方案1】:

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

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");
        }
}

问题解决了。

【讨论】:

  • 不过,您应该处理,而不是删除... :)
猜你喜欢
  • 2020-08-19
  • 1970-01-01
  • 2023-02-16
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多