Ich möchte, dass sich mein ToolStrip-Hintergrund ändert, wenn ein Element nicht gespeichert wird.ToolStrip.Background ändert nur den Hintergrund der Schaltfläche (C# /. NET/WinForms)
Um den Hintergrund meiner Toolstrip machen ich meine eigenen Renderer verwenden:
class ToolStripRenderer : ToolStripProfessionalRenderer
{
private MenuBarForm parent;
public ToolStripRenderer(MenuBarForm Parent)
{
parent = Parent;
}
protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
{
if (parent.controlItems.Last().Unsaved)
e.Graphics.FillRectangle(new System.Drawing.Drawing2D.LinearGradientBrush(e.ToolStrip.ClientRectangle, SystemColors.ControlLightLight, Color.Red, 90, true), e.AffectedBounds);
else
e.Graphics.FillRectangle(new System.Drawing.Drawing2D.LinearGradientBrush(e.ToolStrip.ClientRectangle, SystemColors.ControlLightLight, SystemColors.ControlDark, 90, true), e.AffectedBounds);
}
}
Das erste Mal, das Toolstrip mit einem grau bis dunkelgrau Design macht richtig macht:
Wenn der Balken jedoch rot wird, werden nur die Schaltflächen rot, auf denen die Maus schwebt:
Ich möchte, dass der ganze Toolstrip auf einmal rot ist.
Ich habe bereits versucht, e.AffectedBounds
zu e.ToolStrip.Bounds
, vergeblich zu ändern.
Klingt wie es nicht denken, dass es das Steuerelement aktualisieren muss. Haben Sie versucht, Invalidate() auf dem Toolstrip aufzurufen? Um es zu zwingen, zu aktualisieren? – MrApnea
Vielen Dank für Ihre Antwort. Ich habe es zu der Frage hinzugefügt. –
Bitte posten Sie die Antwort nicht als Teil der Frage. Es ist verwirrend für zukünftige Leser. Veröffentlichen Sie es als Antwort. –