Как сопоставить стили TabPage по умолчанию с программно созданными вкладками?

При программной вставке вкладок создаваемые вкладки не имеют такого же типа цветовой схемы, как можно было бы ожидать при использовании конструктора. Как видно из приведенного ниже снимка экрана, цвет фона вкладки «Активные» остался неизменным. Как мне программно добавить TabPages в элемент управления вкладками, чтобы он вел себя так, как если бы я добавил их с помощью дизайнера?

введите здесь описание изображения

У меня есть следующий код, который программно вставляет вкладки в элемент управления вкладками, который я создал с помощью WinForms (он находится в цикле foreach).

TabPage tPage = new TabPage();
tPage.Text = item.DisplayName + " Options";

FlowLayoutPanel flowPanel = new FlowLayoutPanel();
Label lblLocationField = new Label();
lblLocationField.Text = "Insert into location field:";
CheckBox chkLocationField = new CheckBox();
chkLocationField.Name = "locationField";
flowPanel.Controls.Add(lblLocationField);
flowPanel.Controls.Add(chkLocationField);

tPage.Controls.Add(flowPanel);

this.tabControlConfiguration.Controls.Add(tPage);

person Magnum    schedule 06.02.2013    source источник
comment
Перед добавлением извлеките файл конструктора и скопируйте все свойства, которые он устанавливает на tabPage. Там должны быть некоторые параметры отображения, такие как BackColor.   -  person zimdanen    schedule 07.02.2013
comment
- или - вы можете забыть о winforms и использовать WPF, который позволяет вам устанавливать стили и шаблоны для всего приложения для любых элементов пользовательского интерфейса.   -  person Federico Berasategui    schedule 07.02.2013
comment
Вероятно, вы видите FlowLayoutPanel. Да, по умолчанию его BackColor серый. Измени это. Код и скриншот не очень хорошо совпадают.   -  person Hans Passant    schedule 07.02.2013
comment
@Hans Passant Я полностью удалил FlowLayoutPanel, и это все тот же случай, как показано в исходном вопросе ниже.   -  person Magnum    schedule 07.02.2013
comment
Добавление к комментарию Зимданена - дизайнер просто добавляет код в другом месте. Сравните код между вашим и файлом .designer.cs, чтобы найти эту разницу.   -  person John Arlen    schedule 07.02.2013


Ответы (1)


Оказывается, новый экземпляр TabPage устанавливает для свойства UseVisualStyleBackColor значение false по умолчанию, тогда как дизайнер устанавливает для него значение «true».

Поэтому, просто добавив одну строку ниже в мой код, я смог заставить его правильно отображаться!

tPage.UseVisualStyleBackColor = true;

введите здесь описание изображения

person Magnum    schedule 06.02.2013