我正在使用 Windows 7 和 Winforms/C#。
当我将工具条添加到工具条容器时,工具条左侧有 3 个像素的空间。即使我将位置设置为 0,0,它也会将其重置回 3,0。这是一张图片来证明这一点:
我怎样才能避免这种情况?我已将 ToolStripContainer 的填充和边距设置为 0,并尝试了不同的 RenderMode,但似乎没有任何帮助。有任何想法吗?
public Form1()
{
InitializeComponent();
this.toolStripContainer1.TopToolStripPanel.RowMargin = new Padding(0);
}
只需RowMargin
在ToolStripContainer
. 它在设计器中不可用,因此需要在代码中设置,如上所示。显然,默认情况下,它的Left
属性RowMargin
设置为 3。这就是为什么当您将其设置为 0 时位置没有改变的原因。
结果:
编辑:似乎我激发了自己的好奇心。现在我想看看我是否可以摆脱底部的 2 像素间隙。到目前为止,这似乎更难追踪。
编辑2:好的,我想通了。它是由ToolStrip
's 渲染器完成的。在此示例中,我使用System
as RenderMode
,因此我在项目中添加了一个新类,该类继承ToolStripSystemRenderer
并覆盖了该OnRenderToolStripBorder
方法,并注释掉了对基方法的调用。
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public class MyToolStripSystemRenderer : ToolStripSystemRenderer
{
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
//base.OnRenderToolStripBorder(e);
}
}
}
然后我在表单的构造函数中添加了另一行来分配自定义渲染器。
public Form1()
{
InitializeComponent();
this.toolStrip1.Renderer = new MyToolStripSystemRenderer();
this.toolStripContainer1.TopToolStripPanel.RowMargin = new Padding(0);
}
结果:
编辑3:所以我今天发现这是一个已知的错误ToolStripSystemRenderer
。我想我没有找到它,因为我最初认为它与ToolStripContainer
. 无论如何,对于那些有帮助的人,这里有一个关于工具条“边界”的问题。https://stackoverflow.com/a/2060360/2056131