public Form1()
{
InitializeComponent();
this.toolStripContainer1.TopToolStripPanel.RowMargin = new Padding(0);
}
RowMargin
内の ToolStripPanelsのプロパティを設定するだけToolStripContainer
です。デザイナーでは使用できないため、上記のようにコードで設定する必要があります。どうやらデフォルトでは、そのLeft
プロパティはRowMargin
3 に設定されています。これが、0 に設定しても場所が変わらなかった理由です。
結果:
編集: 自分の好奇心を刺激したようです。現在、下部の 2 ピクセルのギャップを取り除くことができるかどうかを確認しようとしています。これまでのところ、追跡するのははるかに難しいようです。
編集2:わかりました。ToolStrip
それはの Rendererによって行われていました。この例では、 として使用System
していたので、メソッドを継承してオーバーライド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
。とにかく、助けてくれる人のために、ツールストリップの「境界」に関するSOの質問があります。https://stackoverflow.com/a/2060360/2056131