Domanda

Ho bisogno di visualizzare un ToolStrip direttamente sotto un MenuStrip nella mia richiesta, ma l'impostazione RenderMode = professionale per ogni non dà risultati identici. Entrambi mostrano un gradiente di sfondo, ma non lo stesso.

C'è qualche modo per utilizzare MenuStrip rendering per la ToolStrip, o viceversa? O qualcuno può consigliare il modo migliore per implementare un gradiente me, che io possa esibirsi in un renderer sub-classificati?

aggiunto in seguito: Molte grazie a nobugz per la sua risposta qui sotto. materiale utile è anche in questa risposta .
C'è solo un altro problema - se mi baso il mio renderer personalizzato sul ToolStripProfessionalRenderer e sovrascrivere OnRenderToolstripBackground, ho ancora ottenere curve curve a destra sulla mia ToolStrip, ma non sul mio MenuStrip. C'è una logica interna che fornisce una Regione diversa per il riempimento da parte del fondo renderer? Ho spento (sovrascritto con una funzione di do-nothing) il renderer confine.

È stato utile?

Soluzione

Non vedo, ma posso immaginare che sia un problema. Ignorare il renderer in modo che utilizza lo stesso sfondo renderer per entrambe le voci di menu e oggetti ToolStrip:

Public Class Form1
    Public Sub New()
        InitializeComponent()
        MenuStrip1.Renderer = New MyRenderer()
    End Sub

    Private Class MyRenderer
        Inherits ToolStripProfessionalRenderer
        Protected Overrides Sub OnRenderItemBackground(ByVal e As ToolStripItemRenderEventArgs)
            MyBase.OnRenderMenuItemBackground(e)
        End Sub
    End Class
End Class

Altri suggerimenti

È possibile ancorare due pannello utilizzando DockStyle.Top, uno sopra l'altro, e quindi aggiungere un MenuStrip a ciascuno di essi. Ho fatto lo stesso sulla mia app, ho bisogno di qualche MenuStrips sui luoghi piuttosto exotical. Si può dare un buon risultato se si utilizza uno sfondo contiguo per loro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top