Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > ToolStripMenuItem и цвета


Автор: IEZ 23.9.2007, 17:16
Приветствую Всех!
Есть меню собираемое ручками (пример):

Код

ToolStripMenuItem tsmipopup = new ToolStripMenuItem();
tsmipopup.Name = "file";
tsmipopup.Text = Properties.Resources.mainmenu_file;

ToolStripMenuItem tsmi = new ToolStripMenuItem();
tsmi.Name = "exit";
tsmi.Text = Properties.Resources.mainmenu_exit;
tsmi.ToolTipText = Properties.Resources.mainmenu_exit_tooltiptext;
tsmi.Click += new EventHandler(BusinessEvent_Exit);
tsmi.Image = ilDevelopment.Images["exit.ico"];

tsmipopup.DropDownItems.Add(tsmi);

menuStrip.Items.Add(tsmipopup);



Все работает. Но интересует другой вопрос.
Если посомтреть на аттач меню, то можно заметить, что оно разделено по цветам на три области:
  • область иконок
  •  область текста меню
  •  область полосы выделения

Вопрос: как можно менять цвета этих областей?
Спасибо. 

Автор: yar 23.9.2007, 18:05
Нужно задать ToolStripManager.Renderer.
Его можно унаследовать от ToolStripProfessionalRenderer и всё перерисовывать самостоятельно.
А если только цвета установить нужно, то делаем наследника, например, от ProfessionalColorTable, и переопределяем значения цветов:

Код

    public class MyColorTable : ProfessionalColorTable
    {
        public override Color ButtonSelectedHighlight
        {
            get { return System.Drawing.Color.Red; }
        }

        // переопределяем другие цвета
        // ....

    }



Затем устанавливаем эту цветовую таблицу в новый рендерер:

Код

        static void Main()
        {
            ToolStripManager.Renderer = new ToolStripProfessionalRenderer(new MyColorTable());
            Application.Run(new Form1());
        }
// ...
// ...

При этом свойство RenderMode в менюшках должно быть ManagerRenderMode. 
Подробнее об ToolStripManager.Renderer можно почитать в http://msdn2.microsoft.com/en-us/library/system.windows.forms.toolstripmanager.renderer.aspx.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)