2017-10-29 21 views
-1

私はプログラム内でグループ内に削除ボタンを含むGroupBoxを作成しています。これらのボタンがクリックされると、btnSil_Clickイベントを介してGroupBoxを削除します。ここでGroupBoxをMouseClickイベントで削除する#

は、私が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が作成されるグループボックスの数です。

そして、ここでは、削除するための私のボタンのクリックハンドラである:

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

しかし、私はgBkisaMetinにアクセスすることはできませんので、これは動作しません。これをどのように機能させることができますか?

+0

編集して質問に詳しい情報を追加してください。何が問題になっていますか?何か動作していないのですか?他の人が回答できるように質問を追加してください。 –

+0

あなたright.I質問を編集する –

+0

投稿したコードは完全ではないので、特に外国語の変数名を理解するのは難しいです。あなたが現在持っているコードのより完全な例を掲示し、これまでにあなたが望むことをしようと試みたものを投稿するのが最もよいかもしれません。 –

答えて

0

のGroupBoxは削除ボタンの親であるため、だから、あなたは非常に簡単に、このようにアクセスすることができるはずです。

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

これは、ボタンへの送信者をキャストし、その後、親コントロールにアクセスします( GroupBox)をParentプロパティを介して呼び出します。 GroupBoxを操作することができます。

0

あなたはそれを作成するときにも、あなたのボタンのTagプロパティでの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 
} 

をこの方法は、ボタンが機能するにはGroupBox内にボタンを置く必要がない点が異なります。

関連する問題