Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

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

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top