Proprietà del menu a discesa
-
06-07-2019 - |
Domanda
Qualcuno sa se e come posso cambiare il colore della striscia di immagini in un semplice menu a discesa in Visual Studio 2008? Attualmente con un menu a discesa ho una mia raccolta di elementi, e accanto a ciascuno nel menu a discesa c'è una striscia di immagine, che è curiosamente un colore grigio con una sfumatura da chiara a scura. Sono ansioso di scoprire se questo colore può essere cambiato o eventualmente rimosso del tutto? Grazie in anticipo ragazzi, Craig.
Soluzione
Suppongo che stai chiedendo informazioni su winforms, dato che non conosco WPF.
Se vuoi solo nascondere la striscia di immagine, puoi impostare ShowImageMargin
e ShowCheckMargin
su false. Tuttavia, non sarai in grado di visualizzare immagini per le tue voci di menu.
Almeno su XP, impostando La proprietà RenderMode
del menu a discesa su ToolStripRenderMode.System
ti darà un menu senza alcuna decorazione del margine dell'immagine; anche se potrebbe non corrispondere allo stile di visualizzazione dell'applicazione.
Se imposti un BackColor
per ciascuna delle tue voci di menu, il margine dell'immagine verrà oscurato.
Per nascondere il margine dell'immagine senza modificare lo stile di visualizzazione del menu a discesa, è necessario creare un renderer con un OnRenderImageMargin
, in questo modo:
class MyRenderer : ToolStripProfessionalRenderer
{
protected virtual void OnRenderImageMargin(ToolStripRenderEventArgs e)
{
// do nothing
}
}
, quindi imposta il ColorTable
del renderer
Ma, prima di fare uno di questi, chiediti:
- C'è un vantaggio in termini di usabilità nel cambiare l'interfaccia in qualcosa di meno familiare?
- Se esiste, questo vantaggio è maggiore del vantaggio di mantenere semplice il codice in modo da poter rispondere rapidamente al feedback degli utenti?
La risposta alla prima domanda è generalmente "No".
Altri suggerimenti
È possibile realizzare questo comportamento creando una sottoclasse di ToolStripRenderer e sovrascrivendo i metodi di rendering appropriati. Vedi MSDN per esempi.
Suppongo che tu stia cercando una soluzione WinForms. Per WPF / Xaml la soluzione è ovviamente completamente diversa e può essere realizzata modificando i modelli di controllo.