2010-01-30 57 views
5

Có thể tạo một mảng điều khiển không? Có cách nào để có được chỉ số của một điều khiển nếu nhiều hơn một trong các điều khiển trong mảng chia sẻ xử lý sự kiện tương tự?C# tạo một mảng các điều khiển

+0

Xin vui lòng, xác định các thành phần. Có lẽ một mẫu mã sẽ giúp đỡ. Ví dụ: –

+0

: Tôi muốn có 30 nút trên biểu mẫu chia sẻ cùng một sự kiện nhấp chuột – Kevin

+0

Thông số người gửi của sự kiện nhấp chuột sẽ là nút tạo ra lần nhấp, vì vậy, chỉ mục sẽ là 'Array.IndexOf (buttonArray, người gửi) ' – shf301

Trả lời

7

Điều này chắc chắn là có thể làm được. Việc chia sẻ trình xử lý sự kiện khá dễ thực hiện trong trường hợp này bởi vì Button làm tăng sự kiện được gửi như một phần của sự kiện args. Nó sẽ là giá trị sender và có thể được đúc lại một Button

Dưới đây là một số mẫu mã

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

giải pháp này phù hợp với tôi. đó chính xác là những gì tôi đang tìm kiếm. – Kevin

4

Dựa trên Kevins bình luận:

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

void Button_Click(object sender, EventArgs e) 
{ 
    Button clickedButton = sender as Button; 
} 
Các vấn đề liên quan