2009-07-31 3 views
0

Кто-нибудь знает, если и как я могу изменить цвет полосы изображения на простом выпадающем меню в Visual Studio 2008? В настоящее время с выпадающим меню у меня есть своя коллекция предметов, а рядом с каждым в выпадающем меню находится полоса изображений, которая в настоящее время представляет собой серый цвет со световым и темным градиентом. Я очень хочу узнать, можно ли изменить этот цвет или вообще удалить его? Спасибо заранее, Крэйг.Свойства выпадающего меню

+0

Пожалуйста, уточните, что такое полоса изображения? Я предполагаю, что это не стандартный элемент управления .NET? – bernhof

+0

полоса изображения - это цветная область, которая отображается рядом с текстом элементов в раскрывающемся меню, это область, выделенная для размещения изображения рядом с различными элементами в выпадающем меню, например. значок ножницы для вырезания под меню редактирования содержится в полосе изображения – 2009-07-31 09:05:06

+0

, например, пример в Microsoft Word. Нажмите меню редактирования, и вы увидите полосу в левой части списка меню, которая будет выделена для изображений или сочетаний клавиш. – 2009-07-31 09:09:35

ответ

0

Я собираюсь предположить, что вы спрашиваете о winforms, поскольку я не знаю о WPF.

Если вы просто хотите скрыть полосу изображения, вы можете установить для свойств ShowImageMargin10 и ShowCheckMargin значение false. Однако вы не сможете отображать изображения для своих пунктов меню.

На XP, по крайней мере, при установке RenderMode свойство выпадающего списка до ToolStripRenderMode.System предоставит вам меню без какого-либо декора оформления изображения; хотя это может не соответствовать визуальному стилю вашего приложения.

Если вы установили BackColor для каждого из пунктов меню, маржа изображения будет закрыта.

Чтобы скрыть край изображения без изменения визуального стиля выпадающего списка, вам нужно создать визуализатор с пустой OnRenderImageMargin функции, например, так:

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

, а затем установить Renderer свойства DropDown к экземпляр нового класса рендеринга. Вы можете изменить цвет поля изображения аналогичным образом, изменив ColorTable рендерера.

Но, прежде чем делать какие-либо из них, спросите себя:

  • Есть ли удобство использования выгоды для изменения интерфейса к чему-то менее знакомое?
  • Если это так, это преимущество больше, чем преимущество простого кода, поэтому вы можете быстро реагировать на отзывы пользователей?

Ответ на первый вопрос обычно «Нет».

+0

Спасибо, симон, я даю ему взрыв и посмотрим, что я могу сделать !! – 2009-07-31 10:54:32

1

Вы можете реализовать это поведение, создав подкласс ToolStripRenderer и переопределив соответствующие методы рендеринга. См. MSDN для примера.

Я предполагаю, что вы ищете решение WinForms. Для WPF/Xaml решение, конечно, совершенно другое и может быть выполнено путем изменения шаблонов управления.