С# Удалить отступы из вкладок в Windows Forms

Вкладки имеют отступ между границей и внутренними элементами управления. Есть ли способ удалить эту прокладку?

Это необходимо, так как TabControl будет выглядеть плохо, если он будет закреплен в родительском контейнере.

Я еще пробовал переопределить какой-то метод, но это не сработало.


person bytecode77    schedule 04.04.2012    source источник
comment
comment
Я не уверен насчет заполнения, но не можете ли вы сделать внешний фон/границу элемента управления вкладкой таким же, как родительский контейнер, чтобы он смешивался (т.е. граница = нет)   -  person Kyra    schedule 05.04.2012
comment
@JustinPihony Я попробовал код в этой ссылке ответа, и он дал мне TabControl в стиле win2k. С проводником в качестве параметра вообще не было никаких изменений. Kyra: TabControl не имеет свойства Border, а для Border TabPage по умолчанию установлено значение None.   -  person bytecode77    schedule 05.04.2012


Ответы (1)


Я узнал, что это может быть достигнуто с помощью WndProc:

public class TabControl2 : TabControl
{
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == 0x1300 + 40)
        {
            RECT rc = (RECT)m.GetLParam(typeof(RECT));
            rc.Left -= 7;
            rc.Right += 7;
            rc.Top -= 2;
            rc.Bottom += 7;
            Marshal.StructureToPtr(rc, m.LParam, true);
        }
        base.WndProc(ref m);
    }
}

public struct RECT
{
    public int Left, Top, Right, Bottom;
}
person bytecode77    schedule 20.04.2012
comment
Это шло в правильном направлении, но стирало границу. Далее была еще белая прокладка вверху. Это дало мне самые чистые результаты: stackoverflow.com/a/7785745/920511 - person Knickedi; 13.10.2013