在终端服务/ Citrix环境中,我应该拨打电话吗?
我的程序中,在我的.NET 3.5 WinForms应用程序中Application.EnableVisualStyles()
开始?或者,最好不要这样做吗?
我正在寻找能够提供最佳性能的选项,并且不需要使用任何控件 主题。
答案 0 :(得分:4)
视觉样式是形成操作系统主题的颜色,字体和其他可视元素。如果控件和操作系统支持,控件将使用视觉样式绘制。要产生效果,必须在创建应用程序中的任何控件之前调用EnableVisualStyles();通常,EnableVisualStyles()是Main函数中的第一行。
因此,如果您需要让您的应用程序与当前的操作系统主题保持一致,则需要调用它。如果经典的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
完全没有效果,因此调用它或不会产生任何影响。