Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

OpenSpace _ Programmation _ [.net Cf] Modifier Les En-têtes D'une Datagrid

Ecrit par: PoP 24/10/2006 13:40

J'ai une appli écrite en C# pour le framwork .NET Compact Framework tournant sur un smartphone sous Windows Mobile 5. Dans cette appli j'ai un composant DataGrid pour lequel je souhaite implémenter le comportement suivant : quand l'utilisateur "click" avec son stylet sur l'entête d'une colonne, je veux que l'entête de cette colonne (et uniquement celle-ci) change de couleur.
Pour le moment je n'arrive qu'à changer la couleur de tous les en-tête d'un coup. Voici comment je fais:

CODE
private void dataGrid1_MouseDown(object o, MouseEventArgs mea)
   {
       DataGrid.HitTestInfo hitTest;

       if (mea.Button == MouseButtons.Left)
       {
           dataGrid1 = (DataGrid)o;
           
           // On fait un hittest pour savoir ou l'on a pointe
           hitTest = dataGrid1.HitTest(mea.X, mea.Y);
           
           // Si le hittest est sur un header de colonne, on continue
           if (hitTest.Type == DataGrid.HitTestType.ColumnHeader)
           {
               // on recupere le nom de la colonne pour l'operation de tri plus bas
               string columnName = ((DataTable)((DataView)dataGrid1.DataSource).Table).Columns[hitTest.Column].ColumnName;

               if (dataGrid1.HeaderBackColor != SystemColors.ControlDark)
               // on veut foncer la couleur des colonnes
               {
                   dataGrid1.HeaderBackColor = SystemColors.ControlDark;
               }
               // on veut remettre la couleur par defaut
               else
               {
                   dataGrid1.HeaderBackColor = defaultColor;
               }
   (...)


Le composant en question est un System.Windows.Forms.DataGrid. Je suis tout à fait enclin à utiliser un composant OpenNETCF si celui-ci permet de faire ce que je souhaite.

Ecrit par: Sha 25/10/2006 15:25

Si mes souvenirs de .Net / DataGrid sont bons, il est possible de déterminer le style de chaque colonne avec un objet DataGridColumnStyle à ajouter à une GridTableStylesCollection.

Ecrit par: PoP 26/10/2006 11:05

Vi vi, mais le problème c'est que ça impacte la colonne, et pas son entête. ;-)
Problème résolu, le client accepte une autre solution : le changement de couleur de la colonne. biggrin.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)