Проблема с выравниванием TabControl в VB.NET - PullRequest
2 голосов
/ 18 декабря 2009

У меня странное поведение с выровненным по левому краю TabControl в VB.NET. Снимок экрана:

alt text

Я хотел, чтобы вкладки были буквально такими же, какими они были бы при повороте на 90 градусов влево.

Это как-то связано с тем, что я (не дай бог) не использую стандартную тему XP? Любое решение, чтобы просто заставить его работать? (Даже если это сложно, но мне не нужен элемент управления с контрастным стилем, я хочу, чтобы программа выглядела согласованно)

Спасибо!

Счастливый конец:

alt text

Ответы [ 2 ]

4 голосов
/ 18 декабря 2009

Хорошо, я решил проблему. Если у кого-то есть такая же проблема, используйте this control . Это бесплатно по лицензии MIT. Скриншот автора:

alt text

Обратите внимание, что автор сделал два элемента управления. Мой совет: у второго неверная поддержка cleartype (он вращается после субпиксельного рендеринга), но он проще в использовании и имеет лучший контроль заполнения. Действуй! =)

EDIT Если вы используете C ++ и вам это нужно, есть подход. Изображение результата: альтернативный текст http://www.codeguru.com/dbfiles/get_image.php?id=6385&lbl=CXPTABCTRL_GIF&ds=20040309
Автор очень подробно описал, как он это сделал, и это хорошо, пример: альтернативный текст http://www.codeguru.com/dbfiles/get_image.php?id=6385&lbl=CXPTABCTRL_RIGHT_GIF&ds=20040309
Это ссылка на статью.

Другим очень хорошим подходом является многоцелевой компонент SkyBound VisualStyles. Кажется, что двоичные файлы являются бесплатными, но источник не очень, очень справедливо. Я проверю это позже, но если вам нужно исправить ошибки в визуальных стилях, это похоже на выбор.
alt text
(источник: skybound.ca )

от авторов:

в первую очередь, это отменяет XP тема ошибок, молча, качественно и автоматически. Но это также обеспечивает простой набор классов, которые вы можете использовать, чтобы нарисовать свои собственные элементы управления, используя API Windows XP Theme.

Чек это . и больше от автора.

Проблема решена !! = D

2 голосов
/ 20 декабря 2009

Да, это ошибка в визуализаторе визуальных стилей для вкладки. Похоже, вы уже нашли замену. Еще один малоэффективный подход - выборочное отключение визуальных стилей для элемента управления. Он вернется обратно к серому боевому кораблю, правильно рисуя вертикальные вкладки. Содержимое вкладки по-прежнему будет отображаться правильно.

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

public class FixedTabControl : TabControl {
  [DllImportAttribute("uxtheme.dll")]
  private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist);

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