为类库启用视觉样式

时间:2009-02-19 23:57:53

标签: c# .net progress-bar class-library visual-styles

当我的项目是类库并且它被加载到没有设置Application.EnableVisualStyles()的程序时,如何启用视觉样式。我现在已经为此困难了2天了。这是在C#中(我已经看到了一些旧C ++的例子以及一些可能适用于VB的东西,但是C#没有明确规定,如果可能的话)。

我尝试在创建任何控件之前从我的类库中运行Application.EnableVisualStyles(),但似乎需要在Application.Run()完成之前完成,而我在应用程序时无法控制.Run()被调用,因为它作为插件进入第三方应用程序(VMware的Virtual Infrastructure Client)。


我试图创建一个清单文件,在编译类库之后,我将清单文件中的链接链接到我的ProgressBar.dll: mt.exe -manifest ProgressBar.dll.manifest -outputresource:ProgressBar.dll; 2

除非这不起作用。如果我创建一个使用我的ProgressBar类库的虚拟应用程序并将清单链接到该应用程序的exe,那么就会出现视觉样式(基本上它在项目属性,应用程序部分中指定了清单文件)。

现在我的按钮看起来很难看,但最令人恼火的是ProgressBar控件在Marquee风格中不起作用。我很快将不得不求助于制作我自己的Marquee风格的ProgressBar,或者只是在它的位置投入动画GIF。关于按钮,我想我可以开始使用Infragistics按钮以获得更一致的结果。

请一如既往地谢谢!

2 个答案:

答案 0 :(得分:0)

当您致电Application.EnableVisualStyles时,如何确定尚未创建任何控件?创建并不一定意味着控件在表单上也可见。

由于您正在使用已关闭的第三方组件,因此如果外观非常重要,我会花时间创建自己的控件。

答案 1 :(得分:0)

您必须在控件中使用OpenThemeData Win32 api:

MSDN: Using Windows XP Visual Styles