Как убрать отступ для иконки в stripmenu?

Напротив каждого элемента в stripmenu есть место для иконки. У меня не будет иконок, как сместить текст, чтобы не было этого отступа?


Ответы (1 шт):

Автор решения: Алексей Обухов

данная опция недоступна из конструктора, но можно выставить ее программно:

private void Form1_Load(object sender, EventArgs e)
{
    HideImageMargin(this.menuStrip1.Items.OfType<ToolStripMenuItem>().ToList());
}

private void HideImageMargin(List<ToolStripMenuItem> items)
{
    items.ForEach(item =>
    {
        var dropdown = (ToolStripDropDownMenu)item.DropDown;
        if (dropdown != null)
        {
            dropdown.ShowImageMargin = false;
            HideImageMargin(item.DropDownItems.OfType<ToolStripMenuItem>().ToList());
        }
    });
}

для красоты, HideImageMargin можно сделать методом расширения и убрать в другой файл:

public static class MenuHelper
{
    public static void HideImageMargin(this MenuStrip menuStrip)
    {
        HideImageMarginInt(menuStrip.Items.OfType<ToolStripMenuItem>().ToList());
    }

    private static void HideImageMarginInt(List<ToolStripMenuItem> items)
    {
        items.ForEach(item =>
        {
            var dropdown = (ToolStripDropDownMenu)item.DropDown;
            if (dropdown != null)
            {
                dropdown.ShowImageMargin = false;
                HideImageMarginInt(item.DropDownItems.OfType<ToolStripMenuItem>().ToList());
            }
        });
    }
}

после чего дополнительный код в форме сокращается до:

private void Form1_Load(object sender, EventArgs e)
{
    this.menuStrip1.HideImageMargin();
}
→ Ссылка