J'essaie d'imiter la façon dont Windows Explorer gère la sélection multiple. Dans un DataGridView par défaut, vous pouvez sélectionner plusieurs éléments en utilisant Ctrl-clic. Mais si vous relâchez la touche Ctrl et que vous essayez ensuite de faire glisser/déposer les éléments sélectionnés, les éléments sélectionnés sont supprimés et la ligne "hit" est sélectionnée. J'ai trouvé la solution suivante quelque part en ligne.Comment imiter le comportement multi-sélection/glisser-déposer de Windows Explorer dans un DataGridView?
protected override OnMouseDown(MouseEventArgs e)
{
int hitRowIndex = HitTest(e.X, e.Y).RowIndex;
if(!SelectedRows.Contains(Rows[hitRowIndex]))
{
base.OnMouseDown();
}
}
Cependant, cela provoque d'autres effets secondaires. Avec la touche CTRL enfoncée et la souris sur un élément sélectionné, l'élément reste sélectionné. Cela est logique car l'événement mousedown est ignoré si la ligne sur laquelle vous avez cliqué est sélectionnée. En examinant le comportement de l'Explorateur Windows, il semble que la désélection d'un élément avec la touche CTRL enfoncée n'est pas gérée avant l'événement MouseUp. Quelqu'un at-il essayé de le faire?