2009-12-16 3 views

risposta

42

Si tratta di un bug nel renderer di "sistema", dettagli in this bug report.

risposta di Microsoft dà una soluzione molto semplice:

1) Creare una sottoclasse di ToolStripSystemRenderer, ignorando OnRenderToolStripBorder e che lo rende un no-op:

public class MySR : ToolStripSystemRenderer 
{ 
    public MySR() { } 

    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) 
    { 
     //base.OnRenderToolStripBorder(e); 
    } 
} 

2) Usare che renderer per la vostra ToolStrip:

toolStrip3.Renderer = new MySR(); 
+8

+1, ma ho modificato la risposta in realtà * includendo * la risposta piuttosto che solo indicandola. StackOverflow dovrebbe essere indipendente, i collegamenti esterni possono marcire. Sono una buona aggiunta, ma il contenuto principale dovrebbe essere su SO stesso. –

+0

Perché si sta spegnendo la mia applicazione? – RickInWestPalmBeach

8

Si potrebbe desiderare di aggiungere il tipo di controllo per evitare di confine mancanti sul ToolStripDropDownMenu/etc. (Poiché ereditato da ToolStrip, inizia stesso uso renderer personalizzato automaticamente):

protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) 
{ 
    if (e.ToolStrip.GetType() == typeof(ToolStrip)) 
    { 
     // skip render border 
    } 
    else 
    { 
     // do render border 
     base.OnRenderToolStripBorder(e); 
    } 
} 

saltata ToolStripDropDownMenu confine non è così notevole durante l'utilizzo ToolStripSystemRenderer ma diventare reale pugno nell'occhio con ToolStripProfessionalRenderer.

Inoltre, l'impostazione di System.Windows.Forms.ToolStripManager.Renderer = new MySR(); potrebbe essere utile se si desidera che tutte le istanze ToolStrip in tutto l'anno utilizzino MySR per impostazione predefinita.