Tôi đang tạo một ứng dụng biểu mẫu cửa sổ bằng C#. Tôi thêm các nút và các điều khiển khác theo chương trình vào thời gian chạy. Tôi muốn biết cách xử lý các sự kiện nhấp chuột của các nút đó?cách xử lý các sự kiện nút được lập trình bổ sung? C#
Trả lời
Hãy thử như sau
Button b1 = CreateMyButton();
b1.Click += new EventHandler(this.MyButtonHandler);
...
void MyButtonHandler(object sender, EventArgs e) {
...
}
Kiểm tra ví dụ này How to create 5 buttons and assign individual click events dynamically in C#
có vẻ như làm việc này, trong khi thêm một thẻ với mỗi phần tử của mảng
Button button = sender as Button;
bạn có biết một cách tốt hơn?
Nếu bạn muốn xem nút nào được nhấp thì bạn có thể thực hiện các thao tác sau khi tạo và gán các nút. Xét rằng bạn tạo các ID nút bằng tay:
protected void btn_click(object sender, EventArgs e) {
Button btn = (Button)sender // if you're sure that the sender is button,
// otherwise check if it is null
if(btn.ID == "blablabla")
// then do whatever you want
}
Bạn cũng có thể kiểm tra xem chúng từ đưa ra một lập luận lệnh cho mỗi nút.
Sử dụng mã này để xử lý một vài nút nghe tiếng click kiện:
private int counter=0;
private void CreateButton_Click(object sender, EventArgs e)
{
//Create new button.
Button button = new Button();
//Set name for a button to recognize it later.
button.Name = "Butt"+counter;
// you can added other attribute here.
button.Text = "New";
button.Location = new Point(70,70);
button.Size = new Size(100, 100);
// Increase counter for adding new button later.
counter++;
// add click event to the button.
button.Click += new EventHandler(NewButton_Click);
}
// In event method.
private void NewButton_Click(object sender, EventArgs e)
{
Button btn = (Button) sender;
for (int i = 0; i < counter; i++)
{
if (btn.Name == ("Butt" + i))
{
// When find specific button do what do you want.
//Then exit from loop by break.
break;
}
}
}
Liên quan đến bình luận của bạn nói rằng bạn muốn biết nút được nhấn vào, bạn có thể thiết lập các thuộc tính .Tag của một nút để bất cứ loại xác định chuỗi bạn muốn vì nó được tạo ra và sử dụng
private void MyButtonHandler(object sender, EventArgs e)
{
string buttonClicked = (sender as Button).Tag;
}
Ít nhất đó là cách đơn giản nhất tôi có thể nghĩ đến. – TehSpowage
cảm ơn bạn, nhưng nó không thực sự phù hợp với nhu cầu của tôi. Tôi đã thử tìm kiếm trên web dựa trên những gì bạn đã cho tôi, nhưng tôi không thể tìm thấy hoặc hiểu bất cứ điều gì. Thing là, tôi có một loạt các nút. Và tôi muốn biết nút nào được nhấp. – jello
@jello, bạn có bao giờ tìm thấy giải pháp của mình để tìm ra nút nào được nhấp không? Tôi có một vấn đề tương tự ngay bây giờ. – mdw7326