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, dieDispWin
noch nicht erstellt. - Einstellung
UseVisualStyleBackColor
auf false ändert sich nichts. - Einstellung
BackColor
undForeColor
oder ZeigtDispWin
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 :
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie versuchen, die Farbe, aber dann überschreiben Sie es sagen
UseVisualStyleBackColor = true
wenn Sie möchten, verwenden Sie Ihre benutzerdefinierte Farbe, die Sie benötigen, um
UseVisualStyleBackColor
zufalse
oder wird die Farbe nur angewendet werden, um die Taste auf der Maus über.einen einfachen test hochgeladen GitHub
Ergebnis
Es ist immer noch relevant, denn wenn Sie etwas versuchen, fixieren Sie Ihre andere problem, Sie könnten es nicht bemerkt aufgrund dieser, also auf jeden Fall entfernen Sie die
UseVisualStyleBackColor
Linie.Obwohl ich denke, es ist nur relevant, wenn
UseVisualStyleBackColor
eingestellt isttrue
vor derBackColor
gesetzt, da ich denke, dass die Einstellung derBackColor
stellt automatischUseVisualStyleBackColor
zufalse
.Pöffel Hinzugefügt github link, fiel frei, um zu Klonen und testen, dann Debuggen Ihres eigenen Codes.
Ich habe es: In das Hauptprogramm.cs-Anwendung.EnableVisualStyles() ist standardmäßig gesetzt, bei der Erstellung einer windows Forms-Anwendung. Kommentieren Sie diese aus, das problem gelöst (obwohl die Tasten nicht so schön Aussehen. Vielen Dank an alle hier.
InformationsquelleAutor balexandre
Wenn
FlatStyle
für die Taste eingestellt istSystem
es zeigt keine backcolor-eher die backcolor-von der Vorlage von system-Farben.InformationsquelleAutor PUG
Stellen Sie sicher, dass Sie nicht über ein Hintergrundbild legen. Dies überschreibt die BackColor.
InformationsquelleAutor Robert