C#: das Ändern der Button-Hintergrundfarbe hat keinen Effekt

Ich habe ein problem mit C# buttons in Windows Forms.

Habe ich erstellen Sie eine Reihe von Schaltflächen programmgesteuert und fügen Sie Sie einem form hinterher.

Interessant, jede änderung, die Tasten (Lage und Größe), außer für die änderung der BackColor leicht ausgeführt. Nur der button die Farbe bleibt unverändert.

Den code wie folgt aussieht:

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();

        }
    }

Ideen jemand?

Eine ähnliche Frage wurde hier aber die Antworten darauf waren nicht sehr hilfreich:

  • Versuchen, zu verwenden Invoke gibt mir die Laufzeitfehler, die DispWin noch nicht erstellt.
  • Einstellung UseVisualStyleBackColor auf false ändert sich nichts.
  • Einstellung BackColor und ForeColor oder Zeigt DispWin nur nach hinzufügen und formatieren die Buttons auch keine Wirkung hatte.

Wohin gehe ich falsch?

Können Sie post code, der produziert das problem? Ich erstelle Schaltflächen, wie Sie sind, aber Sie haben alle die Farbe.
was bedeutet Aktualisieren?
Mein problem ist, ich weiß nicht, was code, außer die, die ich gepostet werden könnte, produzieren das problem. Wenn ich das wüsste, hätte ich wahrscheinlich nicht brauchen, um die post in Frage. Ich hatte gehofft, dass das problem könnte schon von dem code, den ich gepostet.
Ich trug die Aktion aktualisieren in der Hoffnung, dass die nachlackierung der Tasten würde das problem lösen. Aber es funktioniert nicht.
Fügen Sie diese : myArrayElements[i].Click += (s, a) => Console.WriteLine((s as Button).UseVisualStyleBackColor); - Dann führen Sie es, klicken Sie darauf und suchen Sie in der Ausgabe-Fenster (debug). Wenn Sie sagt, "Wahren" wissen Sie etwas, das ist die Einstellung UseVisualStylesBackColor nach Ihrer Gründung-code.

InformationsquelleAutor Lionel Pöffel | 2011-08-19

Schreibe einen Kommentar