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.

È stato utile?

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 Renderer su un'istanza della nuova classe di rendering. Puoi cambiare il colore del margine dell'immagine in modo simile modificando la 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.

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