public Form1()
{
InitializeComponent();
this.toolStripContainer1.TopToolStripPanel.RowMargin = new Padding(0);
}
Run Code Online (Sandbox Code Playgroud)
只需在其中设置RowMarginToolStripPanels 的属性即可ToolStripContainer.它在设计器中不可用,因此需要在代码中设置,如上所示.显然默认情况下,该Left属性RowMargin设置为3.这就是当您将其设置为0时位置没有更改的原因.
结果:

编辑:我似乎激起了自己的好奇心.现在我想看看我是否可以摆脱底部的2像素间隙.到目前为止,这个似乎要难以追踪.
编辑2:好的,我明白了.这是由ToolStrip渲染者完成的.在这个例子中,我使用的System是RenderMode,所以我在项目中添加了一个新类,它继承ToolStripSystemRenderer并覆盖了OnRenderToolStripBorder方法,并注释掉了对base方法的调用.
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public class MyToolStripSystemRenderer : ToolStripSystemRenderer
{
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
//base.OnRenderToolStripBorder(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在表单的构造函数中添加了另一行来分配自定义渲染器.
public Form1()
{
InitializeComponent();
this.toolStrip1.Renderer = new MyToolStripSystemRenderer();
this.toolStripContainer1.TopToolStripPanel.RowMargin = new Padding(0);
}
Run Code Online (Sandbox Code Playgroud)
结果:

编辑3:所以今天我发现这是一个已知的错误ToolStripSystemRenderer.我想我没有找到它,因为我最初认为它与它有关ToolStripContainer.无论如何,对于那些有帮助的人来说,这是一个关于工具条"边界"的问题./sf/answers/144225231/
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |