Свойства выпадающего меню - PullRequest
0 голосов
/ 31 июля 2009

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

Ответы [ 2 ]

1 голос
/ 31 июля 2009

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

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

0 голосов
/ 31 июля 2009

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

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

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

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

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

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

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

в рендере.

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

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

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

...