Как настроить toolstrip кнопка выделения цвета на мыши
Я использую 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);
}
}
}
вы можете сделать это, делая индивидуальную реализацию ProfessionalColorTable и передавая это конструктор ToolStripProfessionalRenderer. Затем можно переопределить некоторые из многих свойств в таблице цветов.
те, которые контролируют действие "нависать" с 'избранный' в своем имени, например 'ButtonSelectedGradientBegin'.
вы можете обнаружить эффект различных свойств, переопределив их и возвращающ смелые, очевидные цвета, поэтому вы можете легко увидеть где они использованы.
и
используйте метки вместо кнопок. Можно задать изображение, фоновое изображение и текст метки toolstrip. Затем настройте события click.
-
события мыши: 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; }