C# Button eine Funktion zuweisen

Deathcore

Lieutenant
Registriert
Apr. 2009
Beiträge
712
Ahoi!

Schreibe aktuell eine Tool was Daten aus einer SQL-Datenbank ausliest und diese auf dem Desktop anzeigt.

Dazu geniere ich Buttons (aber auch Labels) je nachdem wie viele Daten anstehen.(Also mal 3 aber auch mal 7).

Nun habe ich folgendes Problem:

Wie weise ich dem Button eine Funktion zu sprich wie mache ich es das Quellcode ausgeführt wird, wenn ich einen der genierten Buttons anklicke.

Sry das ich mich so umständlich ausdrücke, aber mein Kopf brummt wie sau.

Hier mal der Quelltext dazu.

cmd_connect muss wie gesagt eine Funktion kriegen!
LinkLabel[] lbl_name_team1 = new LinkLabel[2000];

LinkLabel[] lbl_name_team2 = new LinkLabel[2000];

LinkLabel[] lbl_name_score1 = new LinkLabel[2000];

Button[] cmd_connect = new Button[2000];



for (int i = 0; anzahl > i; i++, Zeile += 30)

{



// Zeilenerzeugung

lbl_name_team1 = new LinkLabel();

lbl_name_team1.Location = new Point(30, Zeile);

lbl_name_team1.Text = "Team1";

lbl_name_team1.Height = 25;

//lbl_name_team1.Width = 9;

this.Controls.Add(lbl_name_team1);



lbl_name_team2 = new LinkLabel();

lbl_name_team2.Location = new Point(130, Zeile);

lbl_name_team2.Text = "Team2";

lbl_name_team2.Height = 25;

//lbl_name_team1.Width = 9;

this.Controls.Add(lbl_name_team2);





lbl_name_score1 = new LinkLabel();

lbl_name_score1.Location = new Point(230, Zeile);

lbl_name_score1.Text = "Score";

//lbl_name_score1.Width = 9;

lbl_name_score1.Height = 25;

lbl_name_score1.Links.Add(0, 20, "www.microsoft.com");

this.Controls.Add(lbl_name_score1);



cmd_connect = new Button();

cmd_connect.Location = new Point(330, Zeile - 5);

cmd_connect.Text = "connect";

cmd_connect.Width = 100;

cmd_connect.Height = 28;

this.Controls.Add(cmd_connect);





}
 
Zuletzt bearbeitet:
Schieb doch mit der Visual Studio einen Button auf's Fensterdesign.
Dann Doppelklick drauf und Du kriegst Beispielcode.

Und sonst:

Code:
partial class Form1
{
     [...]
    
     private void InitializeComponent()
     {
         this.testButton = new System.Windows.Forms.Button();
         [...]
         this.testButton.Click += new System.EventHandler(this.testButton_Click);
      }
[...]
}

und eben in der Form1.cs:

Code:
private void testButton_Click(object sender, EventArgs e)
{
    [...]
}
 
Zuletzt bearbeitet:
Wüsste nicht, wieso man da jetzt nicht den Gui-Builder von VS nutzen sollte?
 
Weil die Daten anzahl und somit die anzahl der Buttons abhängig ist und nicht immer gleich, steht auch so im ersten post
 
Weil er die Buttons dynamisch generiert.

Aber um sich's mal anzugucken, taugt's doch.
 
Danke für die schnellen Antworten!

Katzenjoghurt deine Antwort scheint wohl schon die Lösung zusein.

Leider versteh ich das noch nicht zu 100%. Wäre super wenn du es kommentierst.

Bin ganz neu im Umgang mit c#
 
Entweder über ein Delegate-Array in derselben Ordnung, oder du erbst von der Klasse Button und fügst eine Methode dazu.

EDIT:
Letztere Variante ist im Regelfall Mist, sorry.
 
Zuletzt bearbeitet:
@mephisto
das ist aber je nachdem was du genau mit der neue klasse machen willst. man kann ja auch daraus eine komponente bauen... wenn du einfach dynamische buttonsanzahl brauchst lohnt sich das bauen der neue komponente nicht!
 
So danke toeffi

Die Lösung war super einfach und klappt!

Danke an alle die ihre grauen Zellen angestrengt haben!
 
Funktioniert übrigens auch ohne Lambda:

button.Click += delegate(object sender, EventArgs args)
{
// Blubb
};

oder

EventHandler handler = delegate(object sender, EventArgs args)
{
// Blubb
};

button1.Click += handler;
button2.Click += handler;
 
Zurück
Oben