ターミナル サービス/Citrix 環境では
Application.EnableVisualStyles()
、プログラムの開始時に .NET 3.5 WinForms アプリを呼び出す必要がありますか? それともやめたほうがいいのでしょうか?
最高のパフォーマンスを提供し、テーマで描画されたコントロールを必要としないオプションを探しています。
ターミナル サービス/Citrix 環境では
Application.EnableVisualStyles()
、プログラムの開始時に .NET 3.5 WinForms アプリを呼び出す必要がありますか? それともやめたほうがいいのでしょうか?
最高のパフォーマンスを提供し、テーマで描画されたコントロールを必要としないオプションを探しています。
視覚スタイルは、オペレーティング システムのテーマを形成する色、フォント、およびその他の視覚要素です。コントロールとオペレーティング システムがそれをサポートしている場合、コントロールはビジュアル スタイルを使用して描画します。効果を得るには、アプリケーションでコントロールを作成する前に EnableVisualStyles() を呼び出す必要があります。通常、EnableVisualStyles() は Main 関数の最初の行です。
そのため、アプリケーションを現在の OS テーマに合わせて表示する必要がある場合は、これを呼び出す必要があります。従来の 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
まったく効果がないため、呼び出すかどうかに違いはありません。