Bất cứ khi nào mở Biểu mẫu, hệ thống sẽ tự động lấy nét một trong các điều khiển cho bạn. Theo như tôi có thể nói, kiểm soát được tập trung là điều khiển được bật đầu tiên trong thứ tự tab, theo hành vi tiêu chuẩn của Windows.Làm cách nào để chỉ định điều khiển nào cần được tập trung khi biểu mẫu mở ra?
Câu hỏi là làm thế nào để thay đổi điều này tại thời gian chạy mà không phải tự động cải tổ thứ tự tab. Ví dụ, một số biểu mẫu có thể muốn thay đổi điều khiển tập trung ban đầu dựa trên logic chương trình, để tập trung vào điều khiển thích hợp nhất. Nếu bạn chỉ tập trung một số điều khiển khác bên trong trình xử lý OnLoad
của mình, thì logic mặc định sẽ thực thi và tập trung lại điều khiển mặc định.
Nếu bạn đang viết bằng C/C++ và sử dụng thủ tục cửa sổ thô hoặc MFC, bạn có thể trả về 0 (FALSE
) từ trình xử lý WM_INITDIALOG
và logic tập trung mặc định bị bỏ qua. Tuy nhiên, tôi không thể tìm thấy bất kỳ cách nào để thực hiện việc này trong Windows Forms. Điều tốt nhất tôi đã đi lên với là sử dụng BeginInvoke
để thiết lập focus sau OnLoad
kết thúc, như vậy:
protected override void OnLoad(System.EventArgs e)
{
base.OnLoad(e);
// ... code ...
BeginInvoke(new MethodInvoker(() => this.someControl.Focus()));
}
Phải có một số cách thích hợp để làm điều này - nó là gì?
Cảm ơn. Nó hoạt động! –
không chỉ lựa chọn hiển thị trên contol nhưng không thể gõ vào hộp văn bản được lựa chọn hoặc đặt hàng tab cũng không di chuyển đến tiếp theo. –