Tôi thấy điều này sau khi tôi thấy câu hỏi của bạn, vì vậy nghĩ tôi sẽ chia sẻ: SplitContainer FAQ
Các liên kết thứ hai trên có nói chính xác bạn cần gì để làm.
Đây là văn bản từ đó chỉ trong trường hợp liên kết bị chết.
//1. Use the custom control defined in the SplitContainerNoFocus sample
//2. Insert the following code in your project, and attach these events to all of the SplitContainers that you don't want stealing focus.
// Temp variable to store a previously focused control
private Control focused = null;
private void splitContainer_MouseDown(object sender, MouseEventArgs e)
{
// Get the focused control before the splitter is focused
focused = getFocused(this.Controls);
}
private Control getFocused(Control.ControlCollection controls)
{
foreach (Control c in controls)
{
if (c.Focused)
{
// Return the focused control
return c;
}
else if (c.ContainsFocus)
{
// If the focus is contained inside a control's children
// return the child
return getFocused(c.Controls);
}
}
// No control on the form has focus
return null;
}
private void splitContainer_MouseUp(object sender, MouseEventArgs e)
{
// If a previous control had focus
if (focused != null)
{
// Return focus and clear the temp variable for
// garbage collection
focused.Focus();
focused = null;
}
}
Vâng, tôi đang đưa ra một thử này, tuy nhiên, với sự kiện MouseMove trên sự kiểm soát, sự kiện này sẽ ngừng bắn nếu chuột được di chuyển quá nhanh và nó đi qua một trong các bảng. Có cách nào để làm cho các sự kiện di chuyển chuột bong bóng lên đến sự kiểm soát hoặc có sự kiểm soát bắt tất cả các sự kiện di chuyển chuột? – Telanor
Nevermind, tôi chỉ nối các sự kiện MouseMove của tất cả các điều khiển với cùng chức năng. Nó đã làm việc ra tốt – Telanor
Tôi nên có công phu rằng ngoài việc xử lý các sự kiện chuột, bạn cũng muốn một bool hoặc một cái gì đó để lưu trữ cho dù nút chuột hiện đang xuống hay không (như trong câu trả lời của Hans). Nếu bạn bấm và giữ nút chuột trên một điều khiển, nó sẽ tạo ra một sự kiện MouseDown trên điều khiển đó. Nếu bạn giữ nút chuột xuống và kéo sang trái hoặc sang phải (hoặc lên hoặc xuống, cho vấn đề đó), tất cả các sự kiện MouseMove sẽ được tạo bởi điều khiển mà bạn đã nhấp vào, ngay cả khi con trỏ chuột rời khỏi điều khiển gốc và biểu mẫu gốc. – MusiGenesis