Как настроить цвет подсветки кнопки на панели инструментов
Я использую ToolStrip
в приложении Winform C#.
Когда я наведу курсор мыши на кнопку, она подсвечивается (прозрачный синий цвет), я хочу изменить этот цвет
Я пытался использовать пользовательский класс рендерера
toolStrip1.Renderer = new MyRenderer();
....
class MyRenderer : ToolStripProfessionalRenderer
{
}
Тем не менее, я не знаю, какой метод я должен изменить, чтобы изменить этот цвет.
3 ответа
На самом деле, нет встроенного способа (или, по крайней мере, я не знаю об этом).
class MyRenderer : ToolStripProfessionalRenderer
{
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
{
if (!e.Item.Selected)
{
base.OnRenderButtonBackground(e);
}
else
{
Rectangle rectangle = new Rectangle(0, 0, e.Item.Size.Width - 1, e.Item.Size.Height - 1);
e.Graphics.FillRectangle(Brushes.Green, rectangle);
e.Graphics.DrawRectangle(Pens.Olive, rectangle);
}
}
}
Быстро и грязно
Используйте метки вместо кнопок. Вы можете установить изображение, фоновое изображение и текст метки панели инструментов. Затем настройте события клика.
СобытиеMouseEnter для элемента toolstrip:
private void tsi_MouseEnter(object sender, EventArgs e) { // Cast to allow reuse of method. ToolStripItem tsi = (ToolStripItem)sender; // Create semi-transparent picture. Bitmap bm = new Bitmap(tsi.Width, tsi.Height); for (int y = 0; y < tsi.Height; y++) { for (int x = 0; x < tsi.Width; x++) bm.SetPixel(x, y, Color.FromArgb(150, Color.White)); } // Set background. tsi.BackgroundImage = bm; }
СобытиеMouseLeave:
private void tsi_MouseLeave(object sender, EventArgs e) { (sender as ToolStripItem).BackgroundImage = null; }
Вы можете сделать это, также сделав пользовательскую реализацию ProfessionalColorTable и передав ее конструктору ToolStripProfessionalRenderer. Затем вы можете переопределить некоторые из множества свойств в таблице цветов.
Те, которые управляют эффектом "зависания", это те, которые имеют "Selected" в названии, например "ButtonSelectedGradientBegin".
Вы можете обнаружить эффект различных свойств, переопределив их и вернув смелые, очевидные цвета, чтобы вы могли легко видеть, где они используются.