Question

J'ai mis un UltraGrid sur un contrôle utilisateur WinForms. J'ai peaufiné certains paramètres pour pouvoir utiliser la grille en tant que table de sélection à plusieurs lignes en lecture seule. Mais il y a un problème: par défaut, la première ligne semble être sélectionnée.

Mais la propriété Selected.Rows est vide et la propriété ActiveRow est également null .

Ainsi, la ligne semble être sélectionnée, mais ce n’est pas le cas, ce qui rend impossible la suppression de la sélection.

Je suis sûr qu'il doit exister un paramètre caché quelque part sur l'UltraGrid pour contrôler ce comportement. Et si ce n’est pas le cas, il existe peut-être une solution de contournement?

Merci.

Était-ce utile?

La solution

Après quelques recherches supplémentaires, j'ai trouvé une solution que je vais partager avec vous tous:

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset();
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset();

Autres conseils

J'ai exactement le même problème que vous, mais la solution de Gerrie Schenck ne fonctionne pas pour moi. J'ai utilisé cette astuce:     MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0];     MyUltraGrid.ActiveRow = null;

essayez ceci:

this.ultraGrid1.SyncWithCurrencyManager = false;
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False;

Cela m'a aidé à supprimer "l’apparence active". d'une grille:

grid.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

Si vous ne souhaitez pas non plus qu'une ligne soit marquée comme étant sélectionnée, vous devez faire de même pour "Apparence sélectionnée":

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

Il est important de faire la distinction entre Sélectionné et Actif. La grille ne sélectionne jamais aucune ligne automatiquement Ce que vous voyez est l'ActiveRow, qui s'affiche en surbrillance, tout comme les lignes sélectionnées.

ActiveRow de la grille étant synchronisé avec CurrencyManager, la première ligne de la grille est donc mise en surbrillance par défaut. La réinitialisation de ActiveRowAppearance et ActiveCellAppearance supprimera la surbrillance par défaut de ActiveRow.

        this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset();
        this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset();

Mais il est important de noter que cela n'empêche pas la ligne de devenir la ligne active, cela signifie simplement que la grille ne met plus en surbrillance la ligne active. Étant donné que la ligne est toujours active (et qu'il n'y a aucun moyen de l'éviter), tout autre élément mettant en surbrillance la ligne active continuera de la surligner. Par exemple, si vous chargez un fichier de bibliothèque de styles (* .isl) dans votre application qui applique un style à ActiveRow, celui-ci sera toujours affiché.

Si vous souhaitez désactiver l'apparence de la ligne active de manière plus approfondie en ignorant complètement tous les paramètres de propriété et les paramètres de la bibliothèque de styles, procédez comme suit:

this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;

Notez que cette propriété a été ajoutée dans la version 9.2 et n'existe pas dans les versions antérieures.

D'une manière ou d'une autre, aucune des solutions répertoriées ci-dessus n'a fonctionné pour moi. Dans mon cas, je voulais simplement que l'activation / sélection ne se produise pas du tout. Alors j'ai fait ce qui suit. Ce n'est peut-être pas la meilleure solution, mais ça marche.

    private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e)
    {
        LayoutVisulizerUltraGrid.ActiveRow = null;
    }

Désactivez complètement la ligne sélectionnée, puis définissez ActiveRow sur null pour effacer la sélection.

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top