2013-05-11 32 views
5

Có cách nào khác bên cạnh button1.Enabled = false; để vô hiệu hóa người dùng nhấp vào không?Vô hiệu hóa nút trong C# KHÔNG cài đặt btn.Enabled = false ;?

Tôi đang triển khai trò chơi TicTacToe đơn giản trong WinForms và nếu tôi sử dụng thuộc tính Bật, màu của văn bản nút sẽ biến thành màu xám làm hỏng giao diện người dùng của tôi rất nhiều.

Tôi muốn giữ định dạng cho nút và chỉ cần vô hiệu hóa việc nhấp thêm từ người dùng.

+2

Phương pháp nhấp chuột của bạn có thể quyết định không làm gì khi được nhấp. –

+0

Việc thêm phần thiết yếu vào mã của bạn có thể hữu ích. –

+2

Bạn có thực sự muốn ngăn chặn bất kỳ hình ảnh nhấp chuột nào hay chỉ tránh bất kỳ tương tác nào khi người dùng nhấp vào? Nếu đó là lần thứ hai, bạn có thể dễ dàng đặt một boolean và chỉ trở lại ngay lập tức nếu bạn cần. –

Trả lời

5

Cách đơn giản nhất có thể là tách trình xử lý sự kiện khi nó được gọi.

void HandleClick(object sender, EventArgs e) 
{ 
    ((Button)sender).Click -= HandleClick; 

    // Handle the click 
} 
+0

Cảm ơn, đây thực sự là giải pháp đơn giản nhất trong số những người khác. –

0

Bạn có thể giữ một mảng các phép toán cho tất cả các ví dụ nút của bạn

bool [] buttonClicked = new bool [9]; 

sau đó bạn có 9 nút xử lý sự kiện click

private void button1_Clicked(object sender, EventArg e) 
{ 
    if(buttonClicked[0]==true) 
     return; 
    else 
    { 
     // your code goes here 
     // mark this button in boolean array as clicked 
     buttonClicked[0] = true; 
    } 
} 

và không quên trong mỗi trò chơi mới để thiết lập lại các buttonClicked giá trị mảng thành false

for(int i=0;i<9;i++) 
{ 
    buttonClicked[i]=false; 
} 

Hy vọng điều này sẽ giúp

0

Trong mỗi ô vuông, bạn có thể đặt nhãn và nút. Khi nút được nhấn, nó ẩn chính nó (thiết lập Hiển thị thành sai) và hiển thị nhãn (một lần nữa bằng cách thiết lập thuộc tính Hiển thị của nó). Bạn có thể đặt văn bản nhãn thành O hoặc X.