Кто-нибудь знает, могу ли я и как изменить цвет полосы изображения в простом раскрывающемся списке в Visual Studio 2008? В настоящее время с раскрывающимся меню у меня есть собственная коллекция элементов, и рядом с каждым в раскрывающемся меню есть полоса изображения, которая в настоящее время имеет серый цвет с градиентом от светлого к темному. Я очень хочу узнать, можно ли изменить этот цвет или вообще удалить его? Заранее спасибо, ребята, Крейг.
Свойства раскрывающегося меню
Ответы (2)
Я предполагаю, что вы спрашиваете о winforms, так как я не знаю о WPF.
Если вы просто хотите скрыть полосу изображения, вы можете установить ShowImageMargin
и ShowCheckMargin
в false. Однако вы не сможете отображать изображения для пунктов меню.
По крайней мере, в XP установите RenderMode
a> свойство раскрывающегося списка на ToolStripRenderMode.System
даст вам меню без какого-либо оформления поля изображения; хотя он может не соответствовать визуальному стилю вашего приложения.
Если вы установите BackColor
для каждого из пунктов меню, поля изображения будут скрыты.
Чтобы скрыть поле изображения без изменения визуального стиля раскрывающегося списка, вам потребуется создать средство визуализации с пустым OnRenderImageMargin
, например:
class MyRenderer : ToolStripProfessionalRenderer
{
protected virtual void OnRenderImageMargin(ToolStripRenderEventArgs e)
{
// do nothing
}
}
а затем установите в раскрывающемся списке Renderer
экземпляру нового класса рендерера. Аналогичным образом можно изменить цвет поля изображения, изменив файл ColorTable
модуля визуализации.
Но прежде чем делать что-либо из этого, спросите себя:
- Есть ли польза от изменения интерфейса на что-то менее привычное?
- Если да, то является ли это преимущество большим, чем преимущество сохранения вашего кода простым, чтобы вы могли быстро реагировать на отзывы пользователей?
Ответ на первый вопрос обычно «Нет».
Вы можете реализовать это поведение, создав подкласс ToolStripRenderer и переопределив соответствующие методы рендеринга. См. MSDN для примеров.
Я предполагаю, что вы ищете решение WinForms. Для WPF/Xaml решение, конечно, совершенно другое, и его можно реализовать, изменив шаблоны элементов управления.