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écution DispWin n'est pas encore créé.
  • Réglage UseVisualStyleBackColor de faux, rien ne change.
  • Réglage BackColor et ForeColor ou Montrant DispWin 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 : 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