追加した最後のボタンを削除するには、次のようなものを使用できます。
//a list where you save all the buttons created
List<Button> buttonsAdded = new List<Button>();
private void button2_Click(object sender, EventArgs e)
{
Button myText = new Button();
myText.Tag = counter;
myText.Location = new Point(x2,y2);
myText.Text = Convert.ToString(textBox3.Text);
this.Controls.Add(myText);
//add reference of the button to the list
buttonsAdded.Insert(0, myText);
}
//atach this to a button removing the other buttons
private void removingButton_Click(object sender, EventArgs e)
{
if (buttonsAdded.Count > 0)
{
Button buttonToRemove = buttonsAdded[0];
buttonsAdded.Remove(buttonToRemove);
this.Controls.Remove(buttonToRemove);
}
}
これにより、既存のボタンから最後に追加されたボタンを常に削除することで、必要な数のボタンを削除できるようになります。
アップデート
マウスカーソルでボタンにカーソルを合わせ、Deleteキーでボタンを削除できるようにする場合は、次のソリューションを使用できます。
- trueに設定
KeyPreview
すると、コントロールで発生した重要なイベントを受信できますForm
この回答で説明されている最初のソリューションのように、buttonsAdded
リストを追加して変更しますbutton2_Click
KeyDown
のイベントハンドラーを作成し、次のForm
コードを追加します。
private void MySampleForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
{
//get control hovered with mouse
Button buttonToRemove = (this.GetChildAtPoint(this.PointToClient(Cursor.Position)) as Button);
//if it's a Button, remove it from the form
if (buttonsAdded.Contains(buttonToRemove))
{
buttonsAdded.Remove(buttonToRemove);
this.Controls.Remove(buttonToRemove);
}
}
}