Question

Est-ce que quelqu'un sait si, et comment je peux changer la couleur de la bande d'image d'un simple menu déroulant dans Visual Studio 2008? Actuellement, avec un menu déroulant, j'ai ma propre collection d'éléments, et à côté de chacun d'entre eux se trouve une bande d'image, qui est actuellement une couleur grise avec un dégradé de lumière à foncé. Je suis impatient de savoir si cette couleur peut être modifiée ou éventuellement supprimée. Merci d'avance les gars, Craig.

Était-ce utile?

La solution

Je suppose que vous parlez des winforms, car je ne connais pas WPF.

Si vous souhaitez simplement masquer la bande d'images, vous pouvez définir le ShowImageMargin et ShowCheckMargin propriétés sur false. Cependant, vous ne pourrez pas afficher d'images pour vos éléments de menu.

Sous XP au moins, définissez la La propriété RenderMode de la liste déroulante en ToolStripRenderMode.System vous donnera un menu sans décoration de marge d'image; bien que cela puisse ne pas correspondre au style visuel de votre application.

Si vous définissez un BackColor pour chacun de vos éléments de menu, la marge de l'image sera masquée.

Pour masquer la marge de l'image sans changer le style visuel du menu déroulant, vous devez créer un moteur de rendu avec un OnRenderImageMargin , comme suit:

class MyRenderer : ToolStripProfessionalRenderer
{
    protected virtual void OnRenderImageMargin(ToolStripRenderEventArgs e)
    {
        // do nothing
    }
}

puis définissez le Renderer à une instance de la nouvelle classe de rendu. Vous pouvez modifier la couleur de la marge de l’image de la même manière en modifiant le ColorTable du rendu.

Mais, avant de vous lancer, posez-vous les questions suivantes:

  • Y at-il un avantage en termes de convivialité à changer l’interface en une interface moins familière?
  • Si tel est le cas, cet avantage est-il supérieur à celui de garder votre code simple afin de pouvoir répondre rapidement aux commentaires des utilisateurs?

La réponse à la première question est généralement "Non".

Autres conseils

Vous pouvez réaliser ce problème en créant une sous-classe de ToolStripRenderer et en surchargeant les méthodes de rendu appropriées. Voir MSDN pour des exemples.

Je suppose que vous recherchez une solution WinForms. Pour WPF / Xaml, la solution est bien sûr totalement différente et peut être réalisée en modifiant les modèles de contrôle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top