Вы установили свойство BackgroundImage
в конструкторе, которое исчезает при наведении мыши.
Вместо этого следует установить свойство Image
.
Чтобы показать другое изображение при наведении, зарегистрируйте обработчики для событий MouseEnter
и MouseLeave
и измените свойство Image из обработчиков.
private void toolStripMenuItem1_MouseEnter(object sender, EventArgs e)
{
this.toolStripMenuItem1.Image = global::WindowsFormsApp1.Properties.Resources.Hover;
}
private void toolStripMenuItem1_MouseLeave(object sender, EventArgs e)
{
this.toolStripMenuItem1.Image = global::WindowsFormsApp1.Properties.Resources.Normal;
}
Редактировать: Если вы хотите, чтобы при наведении указывалось другое BackgroundImage
, используйте пользовательский рендер (сначала удалите код MouseEnter/MouseLeave
, указанный выше, и установите для обоих Image/BackgroundImage
значение none в конструкторе).
public Form1()
{
InitializeComponent();
menuStrip1.Renderer = new BackgroundImageRenderer(); //menuStrip1 is the container for the toolstrip menu items.
}
private class BackgroundImageRenderer : ToolStripProfessionalRenderer
{
protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
{
if (e.Item.Name == "toolStripMenuItem1")
{
Image backgroundImage = global::WindowsFormsApp1.Properties.Resources.Normal;
if (e.Item.Selected)
backgroundImage = global::WindowsFormsApp1.Properties.Resources.Hover;
e.Graphics.DrawImage(backgroundImage, 0, 0, e.Item.Width, e.Item.Height);
}
else
{
base.OnRenderMenuItemBackground(e);
}
}
}