i défini pour mon objet DataGridView Comment puis-je détecter la réorganisation de colonnes? p> p>
6 Réponses :
Je ne sais pas ce que vous essayez exactement d'atteindre. Si vous souhaitez ajouter un comportement de tri de colonne personnalisé, vous pouvez consulter Ce tutoriel sur personnalisable Tri de colonne . P>
Fondamentalement, vous attrapez l'événement code> MouseDown Code> et vous regardez si l'utilisateur a cliqué sur une en-tête de colonne. S'il l'a fait et qu'il y a un événement qui lui est attribué, cela peut être exécuté. P>
traite de cet événement faire ce dont vous avez besoin? P>
Je ne sais pas pourquoi cela est marqué aussi correct que ce n'est pas le cas. Cet événement sera viré dans de nombreuses autres circonstances, comme la réinitialisation de la table de données, etc.
Cela déclenche au moins deux fois pour chaque fois que l'utilisateur réorient les colonnes. Une fois pour le point de départ, une fois pour le point de fin, et une fois pour chaque colonne entre les deux. En fonction de ce que vous faites avec l'événement, cela pourrait être beaucoup de frais généraux.
Je vous suggère ...
1 - Faites une variable INT statique. P>
2 - Affecter cette variable dans le gestionnaire :: ColonneHeaderMouseclick P>
3 - Choisissez votre ligne Avec cette variable dans le gestionnaire :: trié p>
exemple: p>
Utilisez ColumnDisplayIndexchanged Event P>
Il serait utile que vous puissiez fournir quelques détails sur la manière d'utiliser l'événement colonnedisplayindexchanged code>
L'événement "Utiliser colonneDisplayIndexchanged" ressemble à la bonne. Cela a fonctionné pour moi. (J'ajouterais un commentaire que j'ai eu le représentant pour cela.)
Un gestionnaire d'événements pour cet événement contiendra E.Column reflétant la nouvelle valeur pour cette colonne. La propriété que vous recherchez est DisplayIndex. Notez que l'événement déclenchera pour chaque colonne qui avait changé DisplayIndex. P>
dans vb.net:
Private Sub dataAnts_ColumnDisplayIndexChanged(sender As Object, e As System.Windows.Forms.DataGridViewColumnEventArgs) Handles dataAnts.ColumnDisplayIndexChanged If bSortingColumns = False Then Debug.Print(e.Column.DisplayIndex & vbTab & e.Column.Name) End If End Sub
La meilleure option que j'ai trouvée était de mettre du code dans l'événement CellMouseUp. Lorsqu'un utilisateur glisse une colonne et chute, l'événement CellMouseUp sera appelé après que les colonnes ont été réarrangées. P>
colonneDisplayindexchanged est appelé trop souvent, y compris lorsque le formulaire est initialisé, ce qui peut causer des problèmes en fonction de ce que vous avez besoin de l'événement. P>