Включить визуальные стили для библиотеки классов - PullRequest
1 голос
/ 20 февраля 2009

как включить визуальные стили, когда мой проект является библиотекой классов и загружается в программу, для которой не установлен Application.EnableVisualStyles (). Я боролся с этим в течение 2 дней. Это в C # (я видел несколько примеров для более старого C ++ и некоторые вещи, которые могут работать для VB, но ничего не было ясно изложено для C # и если это вообще возможно).

Я пытался запустить Application.EnableVisualStyles () из моей библиотеки классов перед созданием каких-либо элементов управления, но, похоже, это необходимо сделать до того, как будет выполнен Application.Run (), и у меня нет контроля, когда приложение .Run () вызывается, поскольку он входит в стороннее приложение как плагин (клиент виртуальной инфраструктуры VMware).


Я попытался создать файл манифеста и после компиляции библиотеки классов я связываю в файле манифеста мой ProgressBar.dll с: mt.exe -manifest ProgressBar.dll.manifest -outputresource: ProgressBar.dll; 2

За исключением того, что это не работает. Если я создаю фиктивное приложение, которое использует мою библиотеку классов ProgressBar, и связываю манифест с exe-файлом этого приложения, то появляются визуальные стили (в основном это долгий путь определения файла манифеста в разделе «Свойства проекта», раздел «Приложение»).

Прямо сейчас мои кнопки выглядят некрасиво, но самое раздражающее то, что элемент управления ProgressBar не работает в стиле Marquee. Мне очень скоро придется прибегнуть к созданию собственного ProgressBar в стиле Marquee или просто добавить анимированный GIF вместо него. Что касается кнопок, я думаю, что я могу начать использовать кнопки Infragistics, чтобы получить более последовательный результат.

Пожалуйста и спасибо, как всегда!

Ответы [ 2 ]

0 голосов
/ 27 апреля 2009

Вам нужно будет использовать OpenThemeData Win32 API в вашем контроле:

MSDN: использование визуальных стилей Windows XP

0 голосов
/ 20 февраля 2009

Как вы можете быть уверены, что при вызове Application.EnableVisualStyles еще нет созданных элементов управления? Созданный не обязательно означает, что элементы управления также видны на форме.

Поскольку вы работаете с закрытым сторонним компонентом, я бы скорее потратил свое время на создание собственных элементов управления, если внешний вид и ощущения так важны.

...