Tôi đang triển khai kiểm soát tùy chỉnh kế thừa từ Control
. Tôi muốn nó được tập trung (nó là một loại hộp danh sách).Tôi có thực sự phải gọi Focus trong OnMouseDown của Điều khiển tùy chỉnh của mình không?
Trong constructor, tôi làm
SetStyle(ControlStyles.Selectable, true);
tôi bây giờ có thể sử dụng Tab để di chuyển để kiểm soát.
Tuy nhiên, khi điều khiển nhận được nhấp chuột, nó không tự động xác nhận tiêu điểm. Tôi có thể làm việc xung quanh điều này, tất nhiên:
protected override void OnMouseDown(MouseEventArgs e)
{
Focus();
base.OnMouseDown(e);
}
Nhưng điều này giống như một kludge không cần thiết. Đây thực sự là con đường để đi? Hoặc có cách nào để yêu cầu Control
tự động lấy tiêu điểm khi nhận được nhấp chuột không?
@Thomas: bạn đề cập đến "Tôi đã có hình chữ nhật tiêu điểm tại chỗ": bạn có đang làm điều này bằng cách cưỡi OnGotFocus và OnLostFocus và gọi ControlPaint.DrawFocusRectangle không? Đánh giá cao bất kỳ phản hồi nào. – BillW
@BillW: Đúng, đó là những gì tôi làm. 'OnGotFocus' và' OnLostFocus' làm mất hiệu lực hình chữ nhật có chứa hình chữ nhật lấy nét; 'OnPaint' kiểm tra thuộc tính' Focused' và gọi 'ControlPaint.DrawFocusRectangle' nếu cần. – Thomas
câu trả lời của bệnh nhân cho câu hỏi của tôi được nhiều người đánh giá cao! Tôi gửi một câu trả lời nhiều hơn là cách duy nhất tôi có thể nhận được điều này để làm việc trong Visual Studio RC1 biên soạn với FrameWork 3.5 (đầy đủ). Bởi "công việc": Tôi có nghĩa là khi Control được "tabbed-to:" nó nhận được một hình chữ nhật lựa chọn được hiển thị, và khi "tabbed-away-from" hình chữ nhật lựa chọn biến mất: và khi nhấn vào Control sẽ hiển thị hình chữ nhật lựa chọn. – BillW