2016-07-12 7 views
-1
 btnName1 = new Button(); 
     counter++; 
     //Start setting of Button 
     btnName1.Location = new Point(47, 35 + a); 
     btnName1.Size = new Size(132, 59); 
     btnName1.FlatStyle = FlatStyle.Popup; 
     btnName1.Text = textBox1.Text; 
     btnName1.Name = "btn" + counter.ToString(); 
     btnName1.BackColor = Color.White; 
     btnName1.ForeColor = Color.Black; 
     panel1.Controls.Add(btnName1); 
     a += btnName1.Size.Height + 2; 
     btnName1.Click += BtnName1_Click; 

Ich schrieb diesen Code für die Herstellung einer neuen Taste. Wenn ich auf die Schaltfläche "Hinzufügen" klicke, wird dieser Code ausgeführt und bei jedem Klick auf die Schaltfläche "Hinzufügen" können wir eine neue Schaltfläche erstellen. Aber mein Problem ist das Wie kann ich Click-Handle für jede Schaltfläche festlegen? Ich meine, wenn ich auf jeder Schaltfläche klicken, zeigen sie ihren Text zu mir und ich diesen Code schrieb die Texte anders zu machen:Set Knopf Griff in C#

btnName1.Text = textBox1.Text;

+0

Es ist nicht klar, was dein Problem ist. Dieser Code scheint in Ordnung zu sein. Welchen Fehler oder welches Problem können Sie mit diesem Code nicht lösen? – Steve

Antwort

1

Sie nicht Ihren Event Code schreiben hat, aber wie Steve erwähnt in sein Kommentar (der anscheinend entfernt wurde), können Sie das Absenderargument verwenden, um die bestimmte Schaltfläche zu erhalten, auf die geklickt wurde. So etwas wie die folgenden sollte sein, was Sie nach:

private void BtnName1_Click(object sender, EventArgs e) 
{ 
    //Access the text with: (sender as Button).Text 

    //Example: Write this button's text to the debug output window 
    Debug.WriteLine((sender as Button).Text); 
} 

Genau darauf achten, dass in meinem speziellen Beispiel, du bist nur ein Button auf dieses Ereignis abonnieren möchte.

0

Bevorzugte Art und Weise ist, was Sie bisher

btnName1.Click += BtnName1_Click; 

... 

private void BtnName1_Click(object sender, EventArgs e) { 
    // Button which has been clicked 
    Button button = sender as Button; 
    //TODO: put relevant code here 
    ... 
} 

jedoch gesetzt haben, können Sie einen eigenen Event-Handler jeder Taste zuweisen:

btnName1.Click += (s, e) => { 
    Button button = s as Button; 
    //TODO: put relevant code here 
    ... 
}; 
+0

Interessant. Jedem Button ein eigenes Event zuzuweisen, scheint ziemlich nett zu sein :) –

+0

@DangerZone: Manchmal ist es nützlich: Der Code aller Buttons (Titel, Ort usw. sowie * Event-Handler *) ist an einer Stelle. Der Nachteil der Methode ist, dass Sie den Ereignishandler nicht aufheben können. –

+0

Ah, das macht Sinn ... Ich habe nicht wirklich über die Entlassung nachgedacht. Ich nehme an, solange du es nicht brauchst, ist es ein ziemlich einfacher Weg, dies zu tun. (was ich annehmen würde, wäre in den meisten Situationen der Fall) –