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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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! Mais je ne sais absolument pas comment m'en sortir.