private class MyRenderer : ToolStripProfessionalRenderer
{
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
{
var btn = e.Item as ToolStripButton;
if (btn != null && btn.CheckOnClick && btn.Checked)
{
Rectangle bounds = new Rectangle(Point.Empty, e.Item.Size);
e.Graphics.FillRectangle(Brushes.Transparent, bounds);
}
base.OnRenderButtonBackground(e);
}
}
我希望当我将鼠标移到按钮上或点击它时,然后制作fillrectangle。 但它永远不会过关:
if (btn != null && btn.CheckOnClick && btn.Checked)
当我将鼠标光标停在它停止的按钮上时,我使用了一个断点:
if (btn != null && btn.CheckOnClick && btn.Checked)
继续进入。 IF线有问题。
编辑:
当我将鼠标移到按钮上时,这就是我所看到的:
我希望当我将鼠标光标移到按钮上或/并点击它时,它将保持透明状态,就像它处于原始状态一样。当我运行我的程序并且鼠标光标没有在按钮上时,这是原始状态:
这是我现在使用的代码:
private class MyRenderer : ToolStripProfessionalRenderer
{
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
{
var btn = e.Item as ToolStripButton;
if (btn != null || btn.CheckOnClick || btn.Checked)
{
Rectangle bounds = new Rectangle(Point.Empty, e.Item.Size);
e.Graphics.FillRectangle(Brushes.Transparent, bounds);
}
base.OnRenderButtonBackground(e);
}
}
它正在排队:
Rectangle bounds = new Rectangle(Point.Empty, e.Item.Size);
e.Graphics.FillRectangle(Brushes.Transparent, bounds);
但是按钮周围的颜色仍然是浅蓝色,就像我上传的第一个屏幕截图一样。 有什么方法可以改变吗?
我想要做的就像在Internet Explorer 11中,当您将鼠标移到右上角的图标/图像上时,图标/图像会改变颜色,但周围没有矩形:
这是来自Internet Explorer常规状态的屏幕截图:
当鼠标光标位于其中一个图标/图像上时,这是Internet Explorer:
答案 0 :(得分:1)
我不认为透明绘画会产生任何视觉效果。那就像用水画画。
如果你不想画一些东西,你会覆盖绘画方法,然后不要调用base
方法而不做任何其他事情。例如:
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) {
}
但是,这并不总是有效。这将取决于你是否真的想要阻止它的绘画。