如何在单击另一个按钮时删除按钮?

问题描述:

这可能很琐碎,但我的问题是我需要删除两个按钮,当他们中的一个被点击。目前,我的代码会在点击第三个按钮时创建这两个按钮。我想要的是这些选项中的一个去做某些事情(我已经完成了这些),一旦完成,就让这些按钮再次消失。下面是代码来创建两个按钮:如何在单击另一个按钮时删除按钮?

private void btnRandom_Click(object sender, EventArgs e) 
{ 
    Button d = new Button(); 
    Button c = new Button(); 
    d.Text = "Dice"; 
    c.Text = "Chance Card"; 
    d.Name = "btnDice"; 
    c.Name = "btnCC"; 
    d.Location = new Point(btnRandom.Location.X, btnRandom.Location.Y + 30); 
    c.Location = new Point(btnRandom.Location.X, btnRandom.Location.Y + 60); 
    d.Click += new EventHandler(d_Click); 
    c.Click += new EventHandler(c_Click);    
    this.Controls.Add(d); 
    this.Controls.Add(c); 
} 

及以下使用

this.btnDice.Enabled = false; 

,或者你可以用我在删除此按钮尝试失败

private void d_Click(object sender, EventArgs e) 
{ 
    this.Controls.Remove(btnDice); // This doesnt work 
} 
+1

您可以使按钮不可见:btnDice.Visible = false; – Max 2013-04-29 11:51:20

+0

当你第一次。但的确如此,尽量让它看起来不可见 – DiederikEEn 2013-04-29 11:52:20

+0

并使其再次可见:btnDice.Visible = true? – Sizza 2013-04-29 11:52:33

您可以禁用按钮可见的财产来隐藏它 例如

this.btnDice.Visible = false; 

对于删除您可能需要刷新表单。

我想你的代码是可以的,但你需要在删除控件后重新绘制表单。

this.Controls.Remove(btnDice); 
this.Refresh(); 

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.refresh.aspx

+0

+1我同意。表格需要重新绘制。 – 2013-04-29 12:03:04

您可以通过删除sender试试这个:

private void d_Click(object sender, EventArgs e) 
{ 
    this.Controls.Remove((Button)(sender)); 
    this.Refresh(); 
} 

你为什么不只是使按钮消失,再度浮出水面?

//Make the button disappear 
this.btnDice.Visible = false; 

//Make the button reappear 
this.btnDice.Visible = true;