在c#中单击动态创建按钮的事件

时间:2014-06-12 08:55:47

标签: c# winforms dynamically-generated

大家好我有一个名为GroupBoxEkle()的函数,对于每个按钮点击它都有效。

private void GroupBoxEkleme()
{
    int sayGB = 0;
    int sayacSoruText = 0;
    int sayacCevapText = 0;
    int sayacKaydetButon = 0;

    //textboxların ve butonların sayısını hesaplama

    sayacSoruText = sayacSoruText + 1;
    sayacCevapText = sayacCevapText + 1;
    sayacKaydetButon = sayacKaydetButon + 1;
    //font oluştur
    Font font = new Font("Microsoft Sans Serif", 10.0f, FontStyle.Bold);
    Font font2 = new Font("Microsoft Sans Serif", 9.0f, FontStyle.Bold);
    //groupbox oluştur
    GroupBox Group = new GroupBox();
    Group.Name = "GroupBox" + sayGB;
    Group.Width = 1240;
    Group.Height = 595;
    Group.Text = "Soru & Cevap";
    Group.Font = font;
    Group.ForeColor = Color.Maroon;
    Group.Location = new Point(200, 86);
    //label oluşturma
    Label Soru = new Label();
    Soru.Text = "SORU: ";
    Soru.Font = font2;
    Soru.ForeColor = Color.Maroon;
    Soru.Location = new Point(6, 33);
    Soru.Width = 53;
    Soru.Height = 13;
    //Soru Text
    TextBox soruText = new TextBox();
    soruText.Name = "soruText" + sayacSoruText;
    soruText.Width = 1150;
    soruText.Height = 25;
    soruText.Font = font2;
    soruText.ForeColor = Color.Black;
    soruText.Multiline = true;
    soruText.Location = new Point(70, 31);
    //label oluşturma
    Label Cevap = new Label();
    Cevap.Text = "CEVAP:";
    Cevap.Font = font2;
    Cevap.ForeColor = Color.Maroon;
    Cevap.Location = new Point(6, 317);
    Cevap.Width = 53;
    Cevap.Height = 25;
    //Cevap Text
    TextBox cevapText = new TextBox();
    cevapText.Name = "cevapText" + sayacCevapText;
    cevapText.Width = 1150;
    cevapText.Height = 490;
    cevapText.Font = font2;
    cevapText.ForeColor = Color.Black;
    cevapText.Multiline = true;
    cevapText.Location = new Point(70, 67);
    //kaydet butonu oluşturma
    Button btn = new Button();
    btn.Name = "btn" + sayacKaydetButon;
    btn.Width = 75;
    btn.Height = 25;
    btn.Text = "Kaydet";
    btn.BackColor = Color.Maroon;
    btn.Font = font2;
    btn.ForeColor = Color.White;
    btn.Location = new Point(1150, 565);
    //kontrolleri ekleme
    Group.Controls.Add(btn);
    Group.Controls.Add(Soru);
    Group.Controls.Add(soruText);
    Group.Controls.Add(Cevap);
    Group.Controls.Add(cevapText);
    this.Controls.Add(Group);
}

现在我想按每个按钮点击一样;动态创建按钮文本框和组框将不可见或处置,新项目将显示增加其名称+1像groupbox1将groupbox2 textbox1将是文本框2.

1 个答案:

答案 0 :(得分:0)

不知道你想要做什么,但这里是你提到的问题的解决方案。此外,我已删除了一些控件以简化答案。

    GroupBox Group;
    TextBox cevapText;
    static int sayGB = 0;
    private void GroupBoxEkleme()
    {
        sayGB++;
        if (Group == null)
            Group = new GroupBox();
        else
        {
            Group.Dispose();
            Group = null;
            Group = new GroupBox();
        }
        Group.Name = "GroupBox" + sayGB.ToString();
        Group.Width = 1240;
        Group.Height = 595;
        Group.Text = "Soru & Cevap";
        Group.ForeColor = Color.Maroon;
        Group.Location = new Point(200, 86);

        if (cevapText == null)
            cevapText = new TextBox();
        else
        {
            cevapText.Dispose();
            cevapText = null;
            cevapText = new TextBox();
        }
        cevapText.Name = "cevapText" + sayGB.ToString();
        cevapText.Width = 1150;
        cevapText.Height = 490;
        cevapText.ForeColor = Color.Black;
        cevapText.Multiline = true;
        cevapText.Location = new Point(70, 67);
        //kontrolleri ekleme
        Group.Controls.Add(cevapText);
        this.Controls.Add(Group);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        GroupBoxEkleme();
    }