在c#中使用MouseClick事件删除GroupBox

时间:2017-10-29 13:33:50

标签: c# winforms groupbox

我正在以编程方式创建包含其中的删除按钮的GroupBox。我想通过btnSil_Click事件单击这些按钮时删除GroupBoxes。

以下是我目前在form_load中的代码:

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

AnaEkranForm.n1是将要创建的GroupBox的数量。

这是我的按钮点击处理程序,用于删除:

private void btnSil_Click(object sender, EventArgs e)
{
    this.Controls.Remove(gBKisaMetin);
    gBKisaMetin.Dispose();
}

但这不起作用,因为我无法访问gBkisaMetin。我怎样才能让它发挥作用?

2 个答案:

答案 0 :(得分:0)

因为GroupBox是删除Button的父级,所以你应该能够非常简单地访问它:

private void btnSil_Click(object sender, EventArgs e)
{
    Control groupBox = ((Button)sender).Parent;
    this.Controls.Remove(groupBox);
    groupBox.Dispose();
}

这会将发送者强制转换为Button,然后通过Parent属性访问父控件(GroupBox)。然后可以操纵GroupBox。

答案 1 :(得分:0)

您还可以在创建Button时在Button的com.facebook.android:account-kit-sdk:4.27属性中存储对GroupBox的引用:

Tag

现在您可以在点击处理程序中检索该引用:

Button btnSil = new Button();
btnSil.Tag = gBKisaMetin;

这种方法的不同之处在于Button不需要在GroupBox内部就可以工作。