Winforms TabControl проблемы с выравниванием - PullRequest
5 голосов
/ 08 февраля 2011

Когда я устанавливаю выравнивание TabControl на Left или Right, это оставляет огромное пространство между кнопками вкладок и областью вкладок.Как избавиться от этого бесполезного пространства?

TabControl.Appearance установлено на Buttons, поскольку, если установлено значение Normal, текст на кнопках исчезает.

tabcontrol

ОБНОВЛЕНИЕ:
Когда я устанавливаю TabControl.Alignment на Bottom и TabControl.Appearance на Normal, кнопки выглядят перевернутыми (оранжевая линия должна быть ниже)
tab control

Когда я устанавливаю TabControl.Alignment на Bottomи TabControl.Appearance до Buttons, на TabPage нет области для размещения элементов управления
enter image description here

Ответы [ 2 ]

5 голосов
/ 08 февраля 2011

Это хорошо известная проблема с реализацией визуального стиля XP для встроенного элемента управления вкладками, только вкладки, выровненные по верхнему рендеру, правильно отображаются. Эта ошибка не устранялась до Windows 7. Обходной путь - выборочно отключить стиль. Добавьте новый класс в ваш проект и вставьте код, показанный ниже. Компиляция. Перетащите новый элемент управления из верхней части панели инструментов на форму и измените свойство Alignment по своему вкусу. Это не будет выглядеть красивее, чем это.

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

class FixedTabControl : TabControl {

    protected override void OnHandleCreated(EventArgs e) {
        SetWindowTheme(this.Handle, "", "");
        base.OnHandleCreated(e);
    }

    [DllImportAttribute("uxtheme.dll")]
    private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);
}
0 голосов
/ 09 мая 2019

Документация Microsoft. Примечания, относящиеся к этой проблеме

Когда для свойства Alignment установлено значение Left или Right, для свойства Multiline автоматически устанавливается значение true.

Когда вы устанавливаете свойство Appearance в FlatButtons, оно появляется как таковое, только если свойство Alignment установлено в Top.В противном случае свойство Appearance отображается так, как если бы оно было установлено в значение «Кнопки».

Если для свойства Appearance установлено значение «Buttons», для свойства «Alignment» также должно быть установлено значение Top, чтобы кнопки отображались правильно.* Примечание

Когда для свойства Appearance установлено значение Buttons, для свойства Alignment также должно быть установлено значение Top, чтобы содержимое вкладки отображалось правильно.Кроме того, если включены визуальные стили и для свойства Alignment установлено значение, отличное от Top, содержимое вкладки может отображаться неправильно.

...