WinForms - DataGridView - pas de cellule sélectionnée
Est-il un moyen de faire un DataGridView ont pas de cellule sélectionnée? Je remarque même quand il perd le focus() il a au moins une cellule active. Est-il un autre mode qui permet cela? ou une autre astuce?
Vous devez vous connecter pour publier un commentaire.
DataGridView.CurrentCell propriété peut être utilisée pour effacer le rectangle de focus.
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.currentcell.aspx
J'ai trouvé que le
DataGridView.CurrentCell = null
n'a pas fonctionné pour moi, en essayant d'obtenir la demande de comportement.Ce que j'ai utilisé était:
Il devait être dans la
DataBindingComplete
gestionnaire d'événement.Où vous joindre le
SelectionChanged
gestionnaire d'événement n'affecte pas le comportement souhaité, mais je l'ai laissé dans l'extrait de code parce que j'ai remarqué pour mes besoins, au moins, c'était mieux à seulement fixer le gestionnaire d'après la liaison de données, de sorte que j'évite un changement de la sélection de l'événement que l'on élève pour chaque élément lié.Le problème avec le réglage de la DataGridView.CurrentCell à null dans le changement de sélection de l'événement est que plus tard, les événements (comme la souris) ne seront pas touchés.
L'option qui a fonctionné pour moi a été de changer la couleur de sélection de la couleur de la grille. La sélection ne sera donc pas visible.
J'ai passé des heures à trouver la solution à ce problème. Ce faire:
Ajoutez le code suivant à votre classe Form1
La importaint ligne de code est
Bonne chance!
J'ai eu le même problème et j'ai suivi cette façon:
Initiales de la cellule active effacé par dataGridView.ClearSelection().
Clair/Ignorer la sélection dans le gestionnaire d'événements, 'CellMouseClick de l'Événement.
Je sais que c'est une vieille question et WinForms est remplacé (mais pas pour un long moment encore dans notre boutique toute façon), donc c'est valable pour nous et je soupçonne quelques autres encore.
Au lieu de jongler avec la sélection ou
CurrentCell
, j'ai trouvé la mise en œuvre de modifier simplement la ligne de sélection des couleurs beaucoup plus adaptée à nos besoins.En plus je n'ai plus de garder une trace de l'ancienne cellule sélectionnée lors de la perdre de vue, ni avoir affaire avec la question délicate lorsque la grille est actualisée lors de ne pas se concentrer (comme par minuterie) et l'ancienne cellule sélectionnée ne peut pas être "restauré" lors de la discussion est renvoyée.
En plus des solutions déjà posté ci-dessus, nous ne pouvions pas (ne veux pas) héritent de la
DataGridView
de contrôle et a plutôt opté pour l'utilisation de la composition. Le code ci-dessous montre la classe utilisée pour implémenter la fonctionnalité, suivi par le code sur la façon de l'utiliser pour "attacher" le comportement d'un DataGridView.Utilisation:
Pour utiliser instancier une instance de la DataGridViewHideSelection de la classe et d'en disposer quand vous n'avez pas besoin de la fonctionnalité tout-plus.
Alternativement, vous pouvez utiliser la pratique de la méthode d'extension
AttachHideSelectionBehaviour()
pour rendre la vie un peu plus facile.C'est peut-être utile à quelqu'un d'autre.
Utilisation DataGridView.ClearSelection() où vous le souhaitez effacer la sélection/cible (par exemple, InitializeComponent, De contrôle.LostFocus, Forme.Charge).