Ho trovato questo dopo che ho visto la tua domanda, così ho pensato di condividere: SplitContainer FAQ
Il secondo link in là dice esattamente cosa devi fare.
Ecco il testo da quello nel caso in cui il collegamento muoia mai.
//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;
}
}
Beh io sto dando una prova, però, con l'evento MouseMove sul controllo, l'evento sarà smettere di sparare se il mouse viene spostato troppo velocemente e passa sopra uno dei pannelli. C'è un modo per far muovere gli eventi del mouse fino al controllo o far sì che il controllo catturi tutti gli eventi di movimento del mouse? – Telanor
Non importa, ho appena collegato gli eventi MouseMove di tutti i controlli alla stessa funzione. Ha funzionato bene – Telanor
Avrei dovuto elaborare che oltre a gestire gli eventi del mouse, si desidera anche un bool o qualcosa per memorizzare se il pulsante del mouse è attualmente inattivo o meno (come nella risposta di Hans). Se si fa clic e si tiene premuto il pulsante del mouse su un controllo, verrà generato un evento MouseDown su tale controllo. Se tieni premuto il pulsante del mouse e trascini verso sinistra o verso destra (o verso l'alto o verso il basso, per quel motivo), gli eventi MouseMove verranno generati dal controllo su cui hai fatto clic, anche se il cursore del mouse si spegne dal controllo originale e su un altro o la forma genitore. – MusiGenesis