【问题标题】:Enable Visual Styles for a Class Library为类库启用视觉样式
【发布时间】:2009-02-19 23:57:53
【问题描述】:

当我的项目是类库并且它被加载到未设置 Application.EnableVisualStyles() 的程序中时,如何启用视觉样式。我已经为此苦苦挣扎了 2 天。这是在 C# 中的(我已经看到了一些旧 C++ 的示例和一些可能适用于 VB 的东西,但是对于 C# 没有任何明确的规定,甚至是否可能)。

在创建任何控件之前,我曾尝试从我的类库中运行 Application.EnableVisualStyles(),但似乎需要在 Application.Run() 完成之前完成,并且我无法控制应用程序何时完成调用 .Run() 是因为这将作为插件(VMware 的虚拟基础架构客户端)进入 3rd 方应用程序。


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

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

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

请一如既往地感谢!

【问题讨论】:

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


    【解决方案1】:

    当您调用Application.EnableVisualStyles 时,如何确定尚未创建控件?已创建并不一定意味着控件在窗体上也可见。

    由于您使用的是封闭的第 3 方组件,因此如果外观和感觉很重要,我会花时间创建自己的控件。

    【讨论】:

      【解决方案2】:

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

      MSDN: Using Windows XP Visual Styles

      【讨论】:

        猜你喜欢
        • 2010-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多