Come posso rimuovere la linea bianca disegnata sotto un controllo di menustria?
Domanda
Leggo alcuni altri articoli su come le persone vogliono personalizzare i colori e i gradienti di un menisip.
Quello che voglio fare è rimuovere il gradiente in modo che il Menustrip sia dello stesso colore del resto della forma che, per me, è le impostazioni predefinite utilizzate durante la creazione di un nuovo progetto WinForms.Ho provato a cambiare il RenderMode
in "System" e funziona un tipo di tipo, ma lascia una linea bianca la lunghezza del Menustrip quando costruisco e lo eseguo.Devo fare un po 'di disegno e dipingere?O c'è un modo più semplice?
Soluzione
Questa è fondamentalmente la stessa domanda di questo uno
La risposta riferisce questo Microsoft Bug Post
Sembra essere un problema fino al 2005. Anche se i commenti dicono che è un bug MS che non sarà riparato, c'è una soluzione alternativa che prevede l'implementazione del tuo rendering:
public class MySR : ToolStripSystemRenderer
{
public MySR()
{
}
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
//base.OnRenderToolStripBorder(e);
}
}
.
Allora tutto ciò che devi fare è impostare il rendering del tuo Menustrip su quello che hai appena implementato:
menustrip1.Renderer = new MySR();
.
L'ho appena provato e sembra funzionare bene.
Altri suggerimenti
Sono d'accordo con Yetti ma se desideri mantenere i tuoi confini puoi provare questo.Sostituisci la spazzola con il tuo colore di sfondo
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
base.OnRenderToolStripBorder(e);
e.Graphics.FillRectangle(Brushes.Black, e.ConnectedArea);
}
.