如何防止禁用的ToolStripMenuItem在鼠标hover时显示边框?

是的,与标题完全相同,在我的项目中,一些toolstripmenuitems被禁用。 但是当我将光标放在菜单项上时,会出现一个蓝色边框,如下所示: 在此处输入图像描述
但我不想要这个。 我想这样:
在此处输入图像描述
你能帮帮我吗,我该如何防止这个蓝色边框?

您应该创建一个自定义ToolStripRenderer ,看看这个 – 如何:为应用程序设置ToolStrip渲染器

  1. 您必须创建这样的自定义渲染器:

     class CutomToolStripMenuRenderer : ToolStripProfessionalRenderer { protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) { if (e.Item.Enabled) base.OnRenderMenuItemBackground(e); } protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { if (e.Item.Enabled) base.OnRenderMenuItemBackground(e); } } 
  2. 然后将此渲染器设置为菜单条:

     menuStrip1.Renderer = new CustomToolStripRenderer(); 

通过在ToolStripMenuItem和项目的副本之间切换为ToolStripLabel ,我可以更多地控制我的“已禁用”menuItems。 然后,我只是切换两者之间的可见性,而不是设置Enabled = false。 这样我就可以为“Disabled”menuItem(Label)定制前缀。

  bool m_isStartSvcEnabled = true; void ToggleServiceEnabled() { m_isStartSvcEnabled = !m_isStartSvcEnabled; mnuStartSvc.Visible = m_isStartSvcEnabled; lblStartSvc.Visible = !m_isStartSvcEnabled; mnuStopSvc.Visible = !m_isStartSvcEnabled; lblStopSvc.Visible = m_isStartSvcEnabled; } 

在此处输入图像描述 在此处输入图像描述

(白色菜单forecolor,以及我在项目创建中定义的标签的浅灰色前色。)