C#: Changement de Bouton BackColor n'a aucun effet
Je vais avoir un problème avec C# boutons dans les Formulaires Windows.
J'ai créer un certain nombre de boutons par programme et les ajouter à un formulaire à la suite.
Il est intéressant de noter, à chaque modification de ces boutons (emplacement et la taille) à l'exception de la modification de la BackColor
est immédiatement exécuté. Seul le bouton de la couleur reste inchangée.
Le code ressemble à ceci:
public class SimpleSortAlgDisplayer : ISortAlgDisplayer
{
#region ISortAlgDisplayer Member
void ISortAlgDisplayer.Init(int[] Data)
{
this.DataLength = Data.Length;
this.DispWin = new CurrentSortStateWin();
this.DispWin.Show();
this.DispWin.Size = new Size(60 + (10 * this.DataLength), 120);
this.myArrayElements = new Button[this.DataLength];
for (int i = 0; i < this.DataLength; i++)
{
this.myArrayElements[i] = new Button();
//begin of series of invoked actions
this.myArrayElements[i].Size=new Size(5,(int)(((80)*(double)Data[i])/1000));
this.myArrayElements[i].Location = new Point(30 + (i * 10), 90-(this.myArrayElements[i].Size.Height));
this.myArrayElements[i].Enabled = true;
this.myArrayElements[i].BackColor = Color.MidnightBlue;
this.myArrayElements[i].UseVisualStyleBackColor = true;
this.DispWin.Controls.Add(this.myArrayElements[i]);
this.myArrayElements[i].Refresh();
}
}
Idées de quelqu'un?
Une question semblable a été posée ici mais les réponses n'étaient pas très utiles:
- En essayant d'utiliser
Invoke
me donne l'erreur d'exécutionDispWin
n'est pas encore créé. - Réglage
UseVisualStyleBackColor
de faux, rien ne change. - Réglage
BackColor
etForeColor
ou MontrantDispWin
seulement après l'ajout et mise en forme des Boutons a également eu aucun effet.
Où vais-je tort?
Pouvez-vous poster le code qui produit ce problème? Je créer des boutons comme vous êtes, mais ils ont tous la couleur.
de quoi Rafraîchir?
Mon problème est que je ne sais pas ce code, à part celui que j'ai posté pourraient produire le problème. Si je savais que je n'aurais probablement pas besoin de poster la question. J'ai été en espérant que le problème est peut-être déjà vu à partir du code que j'ai posté.
J'ai inséré l'action actualiser en espérant que repeindre les boutons permettrait de résoudre le problème. Mais il ne le fait pas.
Ajouter cette :
de quoi Rafraîchir?
Mon problème est que je ne sais pas ce code, à part celui que j'ai posté pourraient produire le problème. Si je savais que je n'aurais probablement pas besoin de poster la question. J'ai été en espérant que le problème est peut-être déjà vu à partir du code que j'ai posté.
J'ai inséré l'action actualiser en espérant que repeindre les boutons permettrait de résoudre le problème. Mais il ne le fait pas.
Ajouter cette :
myArrayElements[i].Click += (s, a) => Console.WriteLine((s as Button).UseVisualStyleBackColor);
- Puis l'exécuter, cliquez sur elle, et de regarder dans la fenêtre de sortie (debug). Si elle dit "Vrai", vous savez que quelque chose est réglage UseVisualStylesBackColor
après votre code de création.OriginalL'auteur Lionel Pöffel | 2011-08-19
Vous devez vous connecter pour publier un commentaire.
Vous essayez de configurer la couleur, mais ensuite vous la remplacez disant
UseVisualStyleBackColor = true
si vous souhaitez utiliser votre couleur personnalisée, vous devez définir
UseVisualStyleBackColor
àfalse
ou la couleur ne sera appliquée que pour le bouton sur la souris sur.un simple test téléchargés sur GitHub
résultat
C'est toujours pertinente, bien que, si vous essayez quelque chose que fixer votre autre problème, vous pourriez ne pas le remarquer pour cette raison, afin de supprimer définitivement les
UseVisualStyleBackColor
ligne.Mais je pense que c'est n'est pertinente que si
UseVisualStyleBackColor
est fixé àtrue
avant laBackColor
est fixée, car je pense que le réglage de laBackColor
définit automatiquementUseVisualStyleBackColor
àfalse
.Pöffel ajouté github lien, n'hésitez pas à le copier et de le tester, déboguer votre propre code.
Je l'ai eu: Dans le programme principal.cs Application.EnableVisualStyles() est réglé par défaut lors de la création d'une application windows Forms. Commentant cela a résolu le problème (même si les boutons n'a pas l'air aussi sympa. Merci tout le monde ici.
OriginalL'auteur balexandre
Si
FlatStyle
pour le bouton est réglé àSystem
, il ne sera pas montrer tout backcolor plutôt d'utiliser le backcolor à partir d'un modèle de système de couleurs.OriginalL'auteur PUG
Assurez-vous que vous n'avez pas de BackgroundImage ensemble. Il remplace le BackColor.
OriginalL'auteur Robert