2010-01-30 16 views
5

Ist es möglich, ein Array von Steuerelementen zu erstellen? Gibt es eine Möglichkeit, den Index eines Steuerelements abzurufen, wenn mehrere Steuerelemente im Array denselben Ereignishandler verwenden?C# ein Array von Steuerelementen erstellen

+0

Bitte, Komponenten definieren. Vielleicht würde ein Codebeispiel helfen. –

+0

Beispiel: Ich möchte 30 Schaltflächen in einem Formular haben, die das gleiche Klickereignis haben – Kevin

+0

Der sender-Parameter des click-Ereignisses ist die Schaltfläche, die den Klick generiert hat. Der Index würde also lauten: Array.IndexOf (buttonArray, sender)) ' – shf301

Antwort

7

Dies ist sicherlich möglich zu tun. Das Teilen der Ereignisbehandlungsroutine ist in diesem Fall ziemlich einfach, weil die Button, die das Ereignis ausgelöst hat, als Teil der Ereignisargumente gesendet wird. Es wird der sender Wert sein und Button auf einen zurückgeworfen

Hier werden kann, ist ein Beispielcode

class Form1 : Form { 
    private Button[] _buttons; 
    public Form1(int count) { 
    _buttons = new Button[count]; 
    for (int i = 0; i < count; i++) { 
     var b = new Button(); 
     b.Text = "Button" + i.ToString() 
     b.Click += new EventHandler(OnButtonClick); 
     _buttons[i] = b; 
    } 
    } 
    private void OnButtonClick(object sender, EventArgs e) { 
    var whichButton = (Button)sender; 
    ... 
    } 
} 
+0

diese Lösung funktioniert für mich. Es ist genau das, wonach ich gesucht habe. – Kevin

4

Basierend auf Kevins Kommentar:

foreach(Button b in MyForm.Controls.OfType<Button>()) 
{ 
    b.Click += Button_Click; 
} 

void Button_Click(object sender, EventArgs e) 
{ 
    Button clickedButton = sender as Button; 
} 
Verwandte Themen