Кто-нибудь знает, если и как я могу изменить цвет полосы изображения на простом выпадающем меню в Visual Studio 2008? В настоящее время с выпадающим меню у меня есть своя коллекция предметов, а рядом с каждым в выпадающем меню находится полоса изображений, которая в настоящее время представляет собой серый цвет со световым и темным градиентом. Я очень хочу узнать, можно ли изменить этот цвет или вообще удалить его? Спасибо заранее, Крэйг.Свойства выпадающего меню
ответ
Я собираюсь предположить, что вы спрашиваете о winforms, поскольку я не знаю о WPF.
Если вы просто хотите скрыть полосу изображения, вы можете установить для свойств ShowImageMargin
10 и ShowCheckMargin
значение false. Однако вы не сможете отображать изображения для своих пунктов меню.
На XP, по крайней мере, при установке RenderMode
свойство выпадающего списка до ToolStripRenderMode.System
предоставит вам меню без какого-либо декора оформления изображения; хотя это может не соответствовать визуальному стилю вашего приложения.
Если вы установили BackColor
для каждого из пунктов меню, маржа изображения будет закрыта.
Чтобы скрыть край изображения без изменения визуального стиля выпадающего списка, вам нужно создать визуализатор с пустой OnRenderImageMargin
функции, например, так:
class MyRenderer : ToolStripProfessionalRenderer
{
protected virtual void OnRenderImageMargin(ToolStripRenderEventArgs e)
{
// do nothing
}
}
, а затем установить Renderer
свойства DropDown к экземпляр нового класса рендеринга. Вы можете изменить цвет поля изображения аналогичным образом, изменив ColorTable
рендерера.
Но, прежде чем делать какие-либо из них, спросите себя:
- Есть ли удобство использования выгоды для изменения интерфейса к чему-то менее знакомое?
- Если это так, это преимущество больше, чем преимущество простого кода, поэтому вы можете быстро реагировать на отзывы пользователей?
Ответ на первый вопрос обычно «Нет».
Спасибо, симон, я даю ему взрыв и посмотрим, что я могу сделать !! – 2009-07-31 10:54:32
Вы можете реализовать это поведение, создав подкласс ToolStripRenderer и переопределив соответствующие методы рендеринга. См. MSDN для примера.
Я предполагаю, что вы ищете решение WinForms. Для WPF/Xaml решение, конечно, совершенно другое и может быть выполнено путем изменения шаблонов управления.
Пожалуйста, уточните, что такое полоса изображения? Я предполагаю, что это не стандартный элемент управления .NET? – bernhof
полоса изображения - это цветная область, которая отображается рядом с текстом элементов в раскрывающемся меню, это область, выделенная для размещения изображения рядом с различными элементами в выпадающем меню, например. значок ножницы для вырезания под меню редактирования содержится в полосе изображения – 2009-07-31 09:05:06
, например, пример в Microsoft Word. Нажмите меню редактирования, и вы увидите полосу в левой части списка меню, которая будет выделена для изображений или сочетаний клавиш. – 2009-07-31 09:09:35