Problème de ForeColor Datagridview

Signaler
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Bonjour,

Je développe une application qui sera utilisé sur Win7 et Xp. Sur win7 aucun problèmes.

C'est sur XP que ça pose problème.

Sur mon interface j'ai glissé un panel. Sur ce panel j'ai glissé 2 boutons et 1 datagridview. Jusque la tout va bien j'ai bien mes contrôles apparents.

Par contre quand je compile, j'execute sur XP, les cells du datagridview vont être de couleur blanches, avec la police d'ecriture en blanc ! De ce fait l'utilisateur ne voit rien du tout dans les cells, sauf s'il les sélectionne, et par surbrillance on peut voir le texte...

Dans mon code je ne touche pas à la couleur, ni a aucune propriété directe du DGV. Je ne fais qu'insérer des données.

POur pallier à ce problème j'ai donc été dans les propriétés du DGV et dans ColumnsHeadersDefaultCellStyle. J'ai modifié la propriété Forecolor (d'origine sur WindowText (noir)) en "Couleur personalisée : Black". Je sauvegarde puis recompile. Ca fonctionne !

Seulement voilà, si je recompile à nouveau, le ForeColor se remet tout seul à WindowText, et sur XP ca fait du blanc sur blanc...


Auriez vous une idée ? Pourquoi juste sur XP ? et pourquoi après une autre compilation ça repasse à l'origine ?

Je précise que j'utilise un autre datagridview (mais pas sur un panel) et il apparait correctement sur XP avec WindowText...

J'espère que j'ai été assez clair.

Merci d'avance pour votre aide,

Cordialement

10 réponses

Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
Peut-on voir votre code ?
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Bonjour cher Zermelo,

Le code est tout de ce qu'il y a de plus basique. Depuis que j'apprends le VB.NET j'utilise la même méthode et je n'avais jamais rencontré ce souci.

DataGridView2.DataSource = dt


DataGridView2.Columns(0).ReadOnly = True
DataGridView2.Columns(1).ReadOnly = True
DataGridView2.Columns(2).ReadOnly = True
DataGridView2.Columns(3).ReadOnly = True
DataGridView2.Columns(4).ReadOnly = True
DataGridView2.Columns(5).ReadOnly = True


  'On interdit le tri par column en cliquant sur le header
For nocol = 0 To DataGridView2.Columns.Count - 1
DataGridView2.Columns(nocol).SortMode = DataGridViewColumnSortMode.NotSortable
Next


PanelPreview.visible = true
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Salut
bizarre
Par contre quand je compile, j'execute sur XP, les cells du datagridview vont être de couleur blanches, avec la police d'ecriture en blanc ! De ce fait l'utilisateur ne voit rien du tout dans les cells, sauf s'il les sélectionne, et par surbrillance on peut voir le texte...

et sur win7 ce n'est pas pareil ?
chez moi avec xp le forcolordu text est noir pas blanc
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Salut ShayW,

Oui c'est vraiment bizarre et incompréhensible.
Sur Win7 aucun souci ! la police d'ecriture est bien noire....
IL n'y a que sur XP que ça fait ça. J'utilise 2 datagridview dans cette application. 1 sur la Main Form et l'autre sur un panel... et c'est sur le DGV sur le panel que ça coince. Je vais essayer de voir si ca ne vient pas de ça...

Et je ne comprends pas pourquoi, une fois que j'ai recompilé avec Datagridview Forecolor = Couleur personalisée : Black, ça fonctionnel très bien sous XP.

Comme si il ne reconnaissais pas la couleur de base de windows : "WindowText".

Je pourrais me contenter de cette solution seulement voilà, même après avoir sauvegardé mon projet, si je recompile, la propriété Forecolor de mon DGV repasse à WindowText.

Je suis dans l'incompréhension la plus totale...
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
Merci pour le code fourni, mais c'est la partie qui utilise la fonction ForeColor qui m'intrigue.
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Nul part dans le code je n'utilise le forecolor...
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
Alors je ne vois plus qu'une chose à tester. Dans la configuration proposée par la propriété DefaultCellStyle, quelle valeur mettez-vous pour la propriété ForeColor ? ControlText ou WindowText ?
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
Nota : Nul part est un anglicisme. En français soutenu, il convient d'écrire nulle part (autrement dit aucune part).
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Ma propriété ForeColor est à "ActiveCaptionText". Si je la passe à "Black", ce sera visible sur XP, mais à la prochaine génération, elle repasse toute seule à "ActiveCaptionText" qui fonctionne très bien sur Seven.

Nota : Je ne parle pas le français soutenu. Un peu comme "cet" ou "cette" après midi, l'essentiel est de se faire comprendre...

Salut,

Dans les propriétés du projet (onglet application), les styles visuels XP sont-ils activés ?
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Salut banana,

Oui ils sont activés !
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Salut

en fait je n'ai toujours pas compris

si tu places un autre datagridview avec l'ide ajoutes 2 3 colonnes
et lances l'appli
si tu écris dans les cells la police d'écriture est blanche ?
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Oui c'est exactement ça ! Ecrire en blanc sur un fond blanc, c'est invisible !
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Bonjour,
Je pense que des modifications ont été apportées sur cette machine dans les paramètres avancés de l'onglet apparence de la fenêtre "propriétés de l'affichage" de Windows.
Ce qui me trouble, c'est que Moundir76 déclare que s'il "force" la couleur noire, cela fonctionne, mais que le texte redevient blanc à la prochaine compilation.
Comme si son appli (ou une appli externe, d'ailleurs) modifiait les paramètres Windows.
Autre chose : question à Moundir : où et comment choisis-tu ce "noir" ? dans les couleurs système ou dans les couleurs "palette" ?

Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Bonjour,

Oui voilà tu résumes très bien mon problème. J'ai essayé sur plusieurs windows XP et toujours le même problème...

Par défaut j'avais laissé les couleurs d'origine du datagridview (dans l'ide quand tu l'insères sur ta form).
Pour que ce soit visible sur Windows XP, je change le forecolor et utilise l'onglet "personnalisé" et je choisis la couleur "Black"
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Que se passe-t-il si tu lui attribues dynamiquement (dans ton code, donc) la couleur noire ( par RGB(0,0,0) et non par "black" ) ?
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Je pense que des modifications ont été apportées sur cette machine dans les paramètres avancés de l'onglet apparence de la fenêtre "propriétés de l'affichage" de Windows.

Oui voilà tu résumes très bien mon problème. J'ai essayé sur plusieurs windows XP et toujours le même problème...

alors tous les ordi ont le meme problème avec l'apparence des fenetres
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
sauf si, ShayW, soit son appli, soit une autre modifie ces paramètres système
sauf encore s'il a nommé Black une variable ou une constante dans cette appli (conflit)
D'où moon message précédant l'invitant à tester en attribuant dynamiquement RGB(0,0,0).
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
bah il faudrait que moundir verifie
les paramètres avancés de l'onglet apparence de la fenêtre avant
le lancement et après
Moundir
encore un autre test
tu as dit
Oui c'est exactement ça ! Ecrire en blanc sur un fond blanc, c'est invisible !

si tu ouvres un nouveau projet et place un datagridview avec colonnes
c'est toujours blanc sur blanc ?
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

@ucfoutu :

Je viens de tester en faisant
DataGridView.DefaultCellStyle.ForeColor = Color.FromArgb(0, 0, 0)
lors du load

et ça n'a rien changé. Par contre si je test avec un bouton par exemple et que je change le backcolor ça fonctionne très bien...

@ShayW : Non aucun souci avec un autre projet...... Je suis perdu. Donc ca vient forcemment de mon appli je vais chercher

Vérifie aussi le designer TonFormulaire.Designer.vb (ce fameux fichier dans lequel l'IDE écrit du code automatiquement).
Il existe peut-être une ligne qui définit cette couleur à ton insu.

Pour l'afficher, dans l'explorateur de solutions, cliquer sur afficher tous les fichiers puis dérouler l'arborescence proposée.
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Je viens de regarder et rien d'anormal...

Me.DataGridView2.DefaultCellStyle = DataGridViewCellStyle14


Je vais regarder si le 14 corresponds a un réglage prédéfini ??
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Ca vient de passer à 23....

J'ai donc modifié dans le designer (pas bien!)
 DataGridViewCellStyle23.ForeColor = System.Drawing.Color.Black


Et ça fonctionne, pour l'instant...

Je vais voir si en regénerant plusieurs fois ça reste ...
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Et voilà, de nouveau dans mon designer.vb, je suis passé à
  Me.DataGridView.DefaultCellStyle = DataGridViewCellStyle6
...
Je pensais que cela contournerai le problème mais non
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Salut
tu as dit
Je viens de regarder et rien d'anormal...
Me.DataGridView2.DefaultCellStyle = DataGridViewCellStyle14



je teste chez moi
je place un datagridview
j'ouvre le fichier designer.vb et je n'ai pas la ligne
Me.DataGridView1.DefaultCellStyle = DataGridViewCellStyle14
ou rien de semblable
j'ouvre le fichier design et proprieté du datagridview
le defaultcellstyle je clique dessus
le tableau qui s'affiche
je vois forecolor un carré noir controltext
je clique sur la rangée et choisis dans le web couleur black
je reviens au designer.vb
je vois la ligne
Me.DataGridView1.DefaultCellStyle = DataGridViewCellStyle1