public Form1()
{
InitializeComponent();
this.toolStripContainer1.TopToolStripPanel.RowMargin = new Padding(0);
}
Просто установить RowMargin
свойство ToolStripPanels в ToolStripContainer
. Он не доступен в дизайнере, поэтому его необходимо установить в коде, как показано выше. Видимо по умолчанию Left
свойство этого RowMargin
устанавливается на 3. Поэтому местоположение не меняется, когда вы установите его в 0.
Результат:
EDIT: Кажется, я Я вызвал свое любопытство. Теперь я пытаюсь понять, смогу ли я избавиться от 2-пиксельного зазора внизу. До сих пор это намного сложнее отслеживать.
EDIT 2: Хорошо, я понял. Это выполнялось рендерером ToolStrip
. В этом примере я использовал 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);
}
Результат:
Edit 3: Так я узнал, что сегодня это известная ошибка с ToolStripSystemRenderer
. Полагаю, я этого не нашел, потому что изначально думал, что это связано с ToolStripContainer
. Во всяком случае, для тех, кто это помогает, вот вопрос о «границе» инструментальной панели. https://stackoverflow.com/a/2060360/2056131
Вы пытались изменить элементы инструментальной панели (например, там есть проставка), см., Если изменение отступов/полей на 0 для этого эффекта ... – XtrmJosh
Нет элемента-разделителя (или любого другого предмета) Я просто установил GripMargin на 10, 2, 2, 2, так что легче перетащить. –