C# 在c中删除带有MouseClick事件的GroupBox#
我正在以编程方式创建包含删除按钮的GroupBox。我想通过C# 在c中删除带有MouseClick事件的GroupBox#,c#,winforms,groupbox,C#,Winforms,Groupbox,我正在以编程方式创建包含删除按钮的GroupBox。我想通过btnSil\u Click事件,在单击这些按钮时删除分组框 以下是我迄今为止在加载表单中的代码: for (i=0;i<AnaEkranForm.n1;i++) { GroupBox gBKisaMetin = new GroupBox(); this.Controls.Add(gBKisaMetin); gBKisaMetin.Location = new Point(80, gYuksek);
btnSil\u Click
事件,在单击这些按钮时删除分组框
以下是我迄今为止在加载表单中的代码:
for (i=0;i<AnaEkranForm.n1;i++)
{
GroupBox gBKisaMetin = new GroupBox();
this.Controls.Add(gBKisaMetin);
gBKisaMetin.Location = new Point(80, gYuksek);
gYuksek += 200;
gBKisaMetin.Text = "Soru " + (soruSayac++);
gBKisaMetin.Width=500;
gBKisaMetin.Height = 150;
TextBox tBSoru = new TextBox();
tBSoru.Location = new Point(30, 30);
tBSoru.Width = 400;
gBKisaMetin.Controls.Add(tBSoru);
Label labelCevap = new Label();
labelCevap.Location = new Point(30, 70);
labelCevap.Text = "Cevap";
gBKisaMetin.Controls.Add(labelCevap);
TextBox tBKisaMetinCevap = new TextBox();
tBKisaMetinCevap.Location = new Point(30, 95);
tBKisaMetinCevap.Width = 400;
gBKisaMetin.Controls.Add(tBKisaMetinCevap);
tBKisaMetinCevap.ReadOnly = true;
Button btnSil = new Button();
btnSil.Location = new Point(460, 10);
btnSil.Width = 30;
btnSil.Text = "Sil";
btnSil.Name = "btnSil_" + i.ToString();
btnSil.Click += new EventHandler(btnSil_Click);
gBKisaMetin.Controls.Add(btnSil);
}
但这不起作用,因为我无法访问
gBkisaMetin
。我如何才能让它工作?因此,由于GroupBox是delete按钮的父项,因此您应该能够像下面这样非常简单地访问它:
private void btnSil_Click(object sender, EventArgs e)
{
Control groupBox = ((Button)sender).Parent;
this.Controls.Remove(groupBox);
groupBox.Dispose();
}
这会将发送者强制转换为按钮,然后通过属性访问父控件(GroupBox)。然后可以操作GroupBox。创建GroupBox时,还可以在按钮的
标记中存储对GroupBox的引用:
Button btnSil = new Button();
btnSil.Tag = gBKisaMetin;
现在,您可以在单击处理程序中检索该引用:
private void btnSil_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
GroupBox gb = (GroupBox)btn.Tag;
gb.Dispose(); // will automatically remove it as well
}
此方法的不同之处在于,按钮不需要位于分组框内,即可工作。请通过编辑向问题添加更多信息。你有什么问题吗?有些东西不起作用了吗?请添加一个问题供其他人回答。你说得对。我编辑了问题。你发布的代码不完整,因此很难理解,尤其是外语变量名。最好是发布一个更完整的代码示例,说明您当前拥有的代码,以及您迄今为止为使其实现所需而尝试的内容。private void btnSilÜu Click(object sender,EventArgs e){this.Controls.Remove(gBKisaMetin);gBKisaMetin.Dispose();}@CanerÜinver最好在您的问题正文中。
private void btnSil_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
GroupBox gb = (GroupBox)btn.Tag;
gb.Dispose(); // will automatically remove it as well
}