J'ai trouvé le moyen de contourner le problème.
Puisque je m'étais rendu compte qu'un désabonnement de Panel_Leave fonctionnait placé le plus en amont possible, dans ListView_SelectedIndexChanged(), je le conserve à cet endroit.
1 2 3 4 5 6
|
private void ArticlesListView_SelectedIndexChanged(object sender, EventArgs e)
{
DonneesPanel.Leave -= DonneesPanel_Leave; // Fonctionne ici
...
} |
Mon problème était de me réabonner.
Je ne pouvais le faire nulle part dans la procédure d'affichage.
J'utilise pour cela un timer de 1000 ms.
À présent tout fonctionne correctement.
Les données sont enregistrées si Panel prend et perd le focus
uniquement par action de l'utilisateur, et c'est l'article consulté et totalement affiché que l'utilisateur quitte qui est enregistré, pas le suivant que l'utilisateur souhaite afficher par son clic dans la ListView.
Néanmoins, le comportement de TabControl, qui, contrairement à tous les autres contrôles du Panel (et il y en a presque de toutes sortes), prend le focus quand son onglet affiché change, me surprend beaucoup.
Mon problème démontre que ce comportement est piégeux.
Merci à tous pour votre aide précieuse
Partager