Kann ich eine bestimmte Farbe für die gesamte Zeile oder Spalte in TableLayoutPanel hinzufügen? Wie? Bitte geben Sie einen Beispielcode an, falls vorhanden.Zeilen-/Spaltenfärbung für TableLayoutPanel (vs2008, winform)
Danke in adv.
Kann ich eine bestimmte Farbe für die gesamte Zeile oder Spalte in TableLayoutPanel hinzufügen? Wie? Bitte geben Sie einen Beispielcode an, falls vorhanden.Zeilen-/Spaltenfärbung für TableLayoutPanel (vs2008, winform)
Danke in adv.
Ja, Sie können.
Verwenden Sie das CellPaint-Ereignis von TableLayoutPanel, um zu testen, welche Zeile/Spalte das Ereignis aufgerufen hat, und verwenden Sie dann eine Grafikobjektgröße für das Rechteck, um die Farbe der Zelle festzulegen.
wie folgt aus (in den ersten und dritten Reihe):
private void Form_Load(object sender, EventArgs e) {
this.tableLayoutPanel1.CellPaint += new TableLayoutCellPaintEventHandler(tableLayoutPanel1_CellPaint);
}
void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
if (e.Row == 0 || e.Row == 2) {
Graphics g = e.Graphics;
Rectangle r = e.CellBounds;
g.FillRectangle(Brushes.Blue, r);
}
}
fand ich diese Antwort viel einfacher zu implementieren:
Das erlaubte mir, eine vollständige Hintergrundfarbe auf meine Zelle zu setzen.
Panel
, die eine Hintergrundfarbe hat, undDock
dass Panel
in meinem TableLayoutPanel
Dann, dass TableLayoutPanel
Zelle eine Hintergrundfarbe hat.
My-Code am Ende wie folgt aussehen:
Panel backgroundColorPanel = new Panel();
backgroundColorPanel.BackColor = Color.FromArgb(243, 243, 243);
backgroundColorPanel.Dock = DockStyle.Fill;
backgroundColorPanel.Margin = new Padding(0);
backgroundColorPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left));
backgroundColorPanel.AutoSize = true;
backgroundColorPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.originalTableLayoutPanel.Controls.Add(backgroundColorPanel, 0, row);
Dies funktioniert, ist aber nicht sehr effizient hinsichtlich der erforderlichen Codezeilen, Speicherauslastung oder Prozessorzyklen. –
Sie wollen sicherstellen, dass Sie die Bürste entsorgen. Wickeln Sie seine Erstellung in eine using() {} -Anweisung oder verwenden Sie das statische Brushes.Blue. Andernfalls verlieren Sie Speicher auf jeder Farbe. – Eilon
danke für die Erinnerung, Eilon - und Erwähnung der Option, die statische Bürsten zu verwenden. –
'Brushes.Blue' ist eine statische Eigenschaft, also würde ich sie nicht entsorgen, sonst könnte sie beim nächsten Mal ungültig werden. –