VB changer la couleur du texte

Résolu/Fermé
arscy - 2 oct. 2020 à 20:45
 arscy - 3 oct. 2020 à 16:23
Bonsoir,

Dans un projet "windows form" sur Visual Basic, j'ai créé une icône.
Dans cette icône j'ai inséré un Label (MonLabel), lequel contient des entiers (Integer) que je souhaite faire disparaître à un temps donné. Or comme j'imbrique cet entier dans un algorithme conditionnel je me vois mal essayer de lui assigner un autre type _String à un quelconque moment _ pour obtenir un
MonLabel.Text = ""


Je pensais changer la couleur du texte pour le confondre avec celui de l'icône. La couleur correspondante est "Menu" (dans la colonne Système).
Bien évidemment,
MonLabel.ForeColor = Color.Menu 

ne correspond à rien.
Auriez-vous une astuce pour que je puisse exprimer cette idée de façon cohérente et compréhensible par VB, et appliquer cette idée à mon code?
Merci d'avance

1 réponse

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
2 oct. 2020 à 20:58
Bonjour,

Je te rassure .... label.Text retourne TOUJOURS une string
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.label.text?view=netcore-3.1

Donc, en le mettant à "" (vide), tu ne changes pas son "type".

Et si le fait d'avoir la valeur vide dans le reste de ton code... il faut simplement que tu vérifies avant si il contient quelque chose ou non.

0
Je me suis mal exprimé (l'éternel problème de la communication: mal le faire c'est mal être compris ^^). Mes excuses, je précise:
Ce label exprime un entier, auquel est associé à une incrémentation sur un bouton
(à chaque clic, la valeur de ce label change),
Je ne souhaite pas verrouiller le bouton.
Si j'assigne "" à mon label, au prochain clic c'est le crash assuré
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > arscy
2 oct. 2020 à 21:05
En programmation on peut, en général, séparer la partie "affichage" de la partie "stockage de variable".
C'est, je pense, la chose à faire.
Pour stocker la variable, tu peux utiliser un champ caché, ou my.settings ou simplement une variable public
0
arscy > jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024
2 oct. 2020 à 21:16
L'idée de la deuxième variable était assez séduisante, sauf que le cas de mon Label fait exception :-(
J'ai assigné ma variable en dehors code du programme, directement dans le Label (propriétés>Text). C'est mon point de départ en fait (c'est une boucle "For" qui incrémente au clic, si on veut).
J'en déduis que le plan du changement de couleur n'est pas réalisable et qu'à part revoir la méthodo de l'algorithme en entier il va falloir repenser cette partie...
0
Youpala!

Je reviens sur mes derniers propos:

"J'en déduis que le plan du changement de couleur n'est pas réalisable"

mais pas du tout mon cher Watson!

En survolant le net j'ai trouvé comment afficher la couleur que je souhaitais :-)
Rappel: à la base je souhaitais faire disparaître mon texte en faisant correspondre sa couleur à celle de l'arrière-plan (c'est-à-dire couleur du texte = couleur de l'icône)
Cette couleur s'appelle Menu et se trouve dans MonLabel>Propriétés>Couleurs>Système>Menu.
Pour l'afficher:
 MonLabel.ForeColor = SystemColors.Menu

Et HOP le tour est joué! Dans ma boucle conditionnelle, à partir d'un seuil spécifique, les écritures de MonLabel disparaissent (sémantiquement parlant elles sont camouflées).
:-)
0