2009-09-15 26 views
6

Câu hỏi đơn giản: Tôi có một nút WinForms, và tôi muốn làm cho cả hai (có điều kiện) vô hình và vô hiệu hóa (để chắc chắn rằng nếu ai đó nhấp vào không gian nơi nút ẩn sẽ hoạt động, nó sẽ không kích hoạt nó.) button.Visible = false cũng ngụ ý button.Enabled = false hoặc tôi có cần đặt/đặt lại cả hai thuộc tính vào thời điểm thích hợp không?Nút Winforms: Hiển thị = false ngụ ý Bật = false?

+1

Tôi biết, không có câu hỏi ngu ngốc/lười biếng, nhưng nghiêm túc, tại sao bạn không thử? :/ –

+2

Tại sao bạn cần tắt nút nếu bạn ẩn nó? Chỉ cần vô hiệu hóa chức năng cơ bản (bằng cách kiểm tra một số cờ, hoặc tuy nhiên bạn biết rằng bạn nên vô hiệu hóa nút). Bằng cách này, ngay cả khi một số người dùng ngu ngốc sử dụng một công cụ để hiển thị lại nút của bạn hoặc gửi một số thông báo cửa sổ đến nút vô hình, chưa được kích hoạt, ứng dụng của bạn sẽ không làm những việc không nên làm. Nói cách khác, nếu bạn muốn tắt chức năng, hãy tắt chức năng và không chỉ là cửa trước cho nó. – OregonGhost

Trả lời

5

Nếu điều khiển không hiển thị, nó sẽ bị tắt hiệu quả. Nhấp vào khu vực mà nó sẽ xuất hiện (hoặc lăn vào và ra khỏi khu vực đó) là nó có thể nhìn thấy sẽ không gây ra một sự kiện để bắn.

EDIT: Để làm rõ, dựa trên phản ứng và ý kiến ​​khác, nút là không tàn tật và nằm bên dưới chức năng sự kiện vẫn sẵn lập trình, nhưng các nút sẽ không thể chất có sẵn/nhìn thấy trên hình thức và người dùng sẽ không thể tương tác với nó theo bất kỳ cách nào (trừ khi bạn, với tư cách là lập trình viên, cung cấp một phương thức khác lập trình).

+0

Có nhiều cách khác với cách nhấp chuột (chẳng hạn như bàn phím) để kích hoạt nút. Tôi đọc câu hỏi của anh ấy để hỏi liệu có cách nào để nhấn nút, không chỉ là nó có thể truy cập được qua chuột. – recursive

+0

@recursive: Trong khi điểm của bạn là hợp lệ, tôi mong đợi một điều khiển để mất tập trung khi nó được ẩn, và rằng nó không thể đạt được tập trung một lần nữa. Điều này có thể không đúng mặc dù, và tôi không chắc chắn những gì sẽ xảy ra với các ghi nhớ. Nhưng thậm chí sau đó, có nhiều cách để nhấn một nút mà không cần chuột hoặc bàn phím. Tự động hóa giao diện người dùng đến với tâm trí. – OregonGhost

1

Cài đặt Hiển thị thành sai? không thay đổi thuộc tính Đã bật. Tuy nhiên, việc thiết lập thuộc tính thành false làm cho điều khiển có hiệu quả ngay cả ở đó. Nếu bạn nhấp vào không gian trống bên trái bằng nút ẩn, sự kiện nhấp của nút sẽ không kích hoạt.

+0

Cảm ơn, Joel. Đó là những gì tôi cần. Tôi chỉ cần đảm bảo rằng người dùng sẽ không thể nhấp vào nó. –

1

Tôi không nghĩ nó ngụ ý rằng nó bị tắt. Nó chỉ có nghĩa là điều khiển không hiển thị trên biểu mẫu do đó không có cách nào để thực hiện hành động trên nó. Nếu bạn đặt thuộc tính hiển thị thành false và sau đó gọi sự kiện Click qua mã nó sẽ xử lý. Tuy nhiên, nếu bạn đặt thuộc tính Bật thành False Tôi sẽ tưởng tượng nó sẽ không

1

Khá chắc chắn nếu .Visible = false, hành động '_Click' bị tắt. Ví dụ: nếu bạn .PerformClick() trong mã của bạn và .Visible = true, _Click sẽ thực thi. Nếu sai, _Click sẽ không thực thi.

Các vấn đề liên quan