Problème de ForeColor Datagridview

Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014 - 25 oct. 2013 à 08:52
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 30 oct. 2013 à 18:09
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

Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
25 oct. 2013 à 12:21
Peut-on voir votre code ?
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
25 oct. 2013 à 15:09
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
25 oct. 2013 à 14:36
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
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
25 oct. 2013 à 15:14
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...
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
25 oct. 2013 à 16:16
Merci pour le code fourni, mais c'est la partie qui utilise la fonction ForeColor qui m'intrigue.
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
28 oct. 2013 à 08:23
Nul part dans le code je n'utilise le forecolor...
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
28 oct. 2013 à 08:42
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 ?
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
28 oct. 2013 à 08:54
Nota : Nul part est un anglicisme. En français soutenu, il convient d'écrire nulle part (autrement dit aucune part).
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
28 oct. 2013 à 09:17
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
28 oct. 2013 à 18:44
Salut,

Dans les propriétés du projet (onglet application), les styles visuels XP sont-ils activés ?
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
29 oct. 2013 à 08:10
Salut banana,

Oui ils sont activés !
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
29 oct. 2013 à 10:10
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 ?
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
29 oct. 2013 à 10:59
Oui c'est exactement ça ! Ecrire en blanc sur un fond blanc, c'est invisible !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 oct. 2013 à 10:27
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" ?

0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
29 oct. 2013 à 11:03
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"
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 29/10/2013 à 11:11
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" ) ?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 29/10/2013 à 11:26
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 oct. 2013 à 11:32
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).
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 29/10/2013 à 12:23
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 ?
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
29 oct. 2013 à 15:19
@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
0
Utilisateur anonyme
29 oct. 2013 à 12:11
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.
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
29 oct. 2013 à 15:24
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 ??
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
29 oct. 2013 à 15:36
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 ...
0
Moundir76 Messages postés 281 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 16 mai 2014
30 oct. 2013 à 13:36
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 30/10/2013 à 18:17
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
0
Rejoignez-nous