在终端服务/ Citrix 环境中,当我的程序启动时,我应该在我的 .NET 3.5 WinForms 应用程序中调用
我正在寻找能够提供最佳性能的选项,并且不需要使用主题绘制任何控件。
Application.EnableVisualStyles()
吗?还是最好不要这样做?我正在寻找能够提供最佳性能的选项,并且不需要使用主题绘制任何控件。
Application.EnableVisualStyles()
吗?还是最好不要这样做?因此,如果您需要使应用程序与当前操作系统主题保持一致,您需要调用此函数。如果您只需要经典的Windows外观,可以跳过此步骤。对于仅用于服务器的应用程序(如控制面板等),我个人从不启用可视化样式。
下面是一个未启用可视化样式的配置工具。对我来说,这种方式看起来很好,所以跳过了EnableVisualStyles
:
通过反射快速查看Application.EnableVisualStyles()
方法,可以发现以下代码位于EnableVisualStyles -> EnableVisualStylesInternal -> CreateActivationContext
方法中:
if (!contextCreationSucceeded && OSFeature.Feature.IsPresent(OSFeature.Themes))
{
enableThemingActivationContext = new ACTCTX();
enableThemingActivationContext.cbSize = Marshal.SizeOf(typeof(ACTCTX));
enableThemingActivationContext.lpSource = dllPath;
enableThemingActivationContext.lpResourceName = (IntPtr) nativeResourceManifestID;
enableThemingActivationContext.dwFlags = 8;
hActCtx = CreateActCtx(ref enableThemingActivationContext);
contextCreationSucceeded = hActCtx != new IntPtr(-1);
}
OSFeature.Feature.IsPresent(OSFeature.Themes)
返回false,则EnableVisualStyles
没有任何效果,因此调用它与不调用它没有任何区别。