J'ai trouvé après avoir vu votre question, donc pensé que je partagerais: SplitContainer FAQ
Le second lien là-bas dit exactement Qu'as tu besoin de faire.
Voici le texte de ce juste au cas où le lien meurt jamais.
//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;
}
}
Eh bien, je vais donner à ce essayer, cependant, avec l'événement MouseMove sur le contrôle, l'événement s'arrêtera le tir si la souris est déplacé trop vite et il va sur l'un des panneaux. Existe-t-il un moyen de faire bouger les événements de la souris vers le contrôle ou faire en sorte que le contrôle capture tous les événements de déplacement de la souris? – Telanor
Peu importe, je viens d'accrocher les événements MouseMove de tous les contrôles à la même fonction. Il a bien – Telanor
j'ai expliqué que, en plus de traiter les événements de souris, vous voulez aussi un bool ou quelque chose pour stocker si le bouton de la souris est actuellement en panne ou non (comme dans la réponse de Hans). Si vous cliquez et maintenez le bouton de la souris sur un contrôle, il générera un événement MouseDown sur ce contrôle. Si vous maintenez le bouton de la souris enfoncé et faites glisser à gauche ou à droite (vers le haut ou vers le bas, d'ailleurs), les événements MouseMove seront tous générés par le contrôle que vous cliquez dessus, même si le curseur de la souris se déclenche le contrôle d'origine et sur un autre ou le formulaire parent. – MusiGenesis