syncfusion-winforms-theming について
Syncfusion Windows Forms アプリのテーマ適用とカスタマイズを扱うリファレンススキルです。SkinManager の設定やテーマ選択、アプリ全体・フォーム・個別コントロールへのスタイル適用を説明します。
主な機能
- 01アプリ全体・個別コントロールのテーマ
- 02組み込みテーマとカスタムテーマ
- 03必要なテーマアセンブリの読み込み
- 04スタイルとフォントのカスタマイズ
- 05テーマによる上書きの制御
活用シーン
- 01複数フォームのスタイル統一
- 02実行時のテーマ切り替え
- 03ダークまたはハイコントラストテーマの使用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ syncfusion/ winforms-ui-components-skills --skill syncfusion-winforms-themingインストール後、Claude Code で/syncfusion-winforms-themingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/advanced-customization.mdgetting-started.mdtheme-management.md詳細
Windows Forms のテーマ設定(SkinManager)
Syncfusion Windows Forms SkinManager は、アプリケーション内のすべての Syncfusion コントロールに一貫したテーマを適用できます。あらかじめ定義されたテーマや Theme Studio ベースのカスタムテーマを使用して、アプリケーション全体、フォーム、または個々のコントロールに統一されたスタイルを設定できます。
このスキルを使用する場面
次のような場合にこのスキルを使用します。
- Syncfusion WinForms コントロールにテーマを適用する(Office2007、Office2010、Office2013、Office2016、Office2019、Metro)
- テーマのアセンブリを設定し、正しく読み込む
- アプリケーション全体、フォーム、またはコンテナーにテーマを適用する
- ThemeStyle プロパティまたは Style プロパティを使用してテーマの外観をカスタマイズする
- デザイナーまたはコードを使用してテーマを適用する
- テーマでユーザーのカスタマイズを上書きするかどうかを制御する
コンポーネントの概要
SkinManager は、Syncfusion Windows Forms コントロールへのテーマ適用を管理するコンポーネントです。次の機能をサポートします。
- 複数の定義済みテーマ(Office2007、Office2010、Office2013、Office2016、Office2019、Metro、HighContrast)
- アプリケーション全体のテーマ管理
- フォーム/コンテナーレベルでのテーマ適用
- 個々のコントロールへのテーマ適用
- ThemeStyle/Style プロパティによる高度なスタイル設定
主要なアセンブリ: Syncfusion.Shared.Base
追加のアセンブリ: 一部のテーマには、別途アセンブリが必要です(Office2016Theme、Office2019Theme、HighContrastTheme)。
ドキュメントおよびナビゲーションガイド
はじめに
📄 参照: references/getting-started.md
- アセンブリの配置とテーマアセンブリの要件
- LoadAssembly メソッドを使用したテーマアセンブリの読み込み
- デザイナーを使用した SkinManager コンポーネントの追加
- コードを使用した SkinManager コンポーネントの追加
- コントロールおよびフォームへの基本的なテーマ適用
- フォーム全体およびコンテナーへのテーマ適用
テーマ管理
📄 参照: references/theme-management.md
- 使用可能なテーマの完全な一覧
- VisualTheme プロパティの使用方法
- プログラムからテーマを設定する SetVisualTheme メソッド
- ApplicationVisualTheme を使用したアプリケーション全体のテーマ設定
- ThemeName プロパティを使用した個々のコントロールのテーマ設定
- 特定のテーマに必要なアセンブリ
- テーマ適用のパターンとベストプラクティス
高度なカスタマイズ
📄 参照: references/advanced-customization.md
- テーマをカスタマイズする ThemeStyle プロパティ
- Sf プレフィックス付きコントロール用の Style プロパティ
- CanOverrideStyle プロパティの動作
- アプリケーション全体のフォントを設定する FontHelper のカスタマイズ
- カスタムスタイルの例とパターン
- テーマによるユーザーカスタマイズの上書き
クイックスタートの例
基本的なテーマ適用(コードを使用)
using Syncfusion.Windows.Forms;
namespace MyWinFormsApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Create SkinManager instance
SkinManager skinManager1 = new SkinManager(this.components);
// Apply theme to entire form (all Syncfusion controls)
skinManager1.Controls = this;
skinManager1.VisualTheme = VisualTheme.Office2016Black;
}
}
}
アプリケーション全体のテーマ(Program.cs)
using Syncfusion.Windows.Forms;
using Syncfusion.WinForms.Themes;
static class Program
{
[STAThread]
static void Main()
{
// Load theme assembly (for Office2019, Office2016, HighContrast)
SkinManager.LoadAssembly(typeof(Office2019Theme).Assembly);
// Set application-wide theme
SkinManager.ApplicationVisualTheme = "Office2019Colorful";
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
よく使われるパターン
パターン 1:フォーム全体にテーマを適用
// Apply theme to all Syncfusion controls in a form
SkinManager skinManager1 = new SkinManager(this.components);
skinManager1.Controls = this; // 'this' refers to the form
skinManager1.VisualTheme = VisualTheme.Office2016White;
パターン 2:個々のコントロールにテーマを適用
// Option 1: Using SkinManager
skinManager1.Controls = treeViewAdv1;
skinManager1.VisualTheme = VisualTheme.Office2016Colorful;
// Option 2: Using ThemeName property
this.treeViewAdv1.ThemeName = "Office2019Colorful";
パターン 3:必要なテーマアセンブリを読み込む
// Office2019 themes
SkinManager.LoadAssembly(typeof(Office2019Theme).Assembly);
// Office2016 themes (for SfDataGrid, SfButton, etc.)
SkinManager.LoadAssembly(typeof(Syncfusion.WinForms.Themes.Office2016Theme).Assembly);
// HighContrast themes
SkinManager.LoadAssembly(typeof(HighContrastTheme).Assembly);
パターン 4:テーマの外観をカスタマイズ
// For Theme Studio themes, customize using ThemeStyle
this.treeViewAdv1.ThemeName = "Office2019Colorful";
this.treeViewAdv1.ThemeStyle.BackColor = System.Drawing.Color.White;
this.treeViewAdv1.ThemeStyle.BorderColor = System.Drawing.Color.SteelBlue;
this.treeViewAdv1.ThemeStyle.TreeNodeAdvStyle.TextColor = System.Drawing.Color.Red;
主要なプロパティとメソッド
SkinManager のプロパティ
| プロパティ | 説明 | 型 |
|---|---|---|
Controls | テーマを適用する親コントロール/フォームを指定します | Control |
VisualTheme | 適用するテーマスタイルを指定します | Enum (VisualTheme) |
ApplicationVisualTheme | アプリケーション全体のテーマを設定します(静的プロパティ) | String |
SkinManager のメソッド
| メソッド | 説明 | パラメーター |
|---|---|---|
SetVisualTheme(Control, VisualTheme) | 指定したコントロールにテーマを適用します | Control, VisualTheme enum |
SetVisualTheme(Control, String) | 指定したコントロールにテーマを適用します | Control, theme name string |
LoadAssembly(Assembly) | テーマを適用する前にテーマアセンブリを読み込みます | Assembly object |
コントロールレベルのプロパティ
| プロパティ | 説明 | 対象 |
|---|---|---|
ThemeName | 個々のコントロールに適用するテーマ名 | すべての Syncfusion コントロール |
ThemeStyle | テーマの外観プロパティをカスタマイズします | Sf 以外のコントロール |
Style | テーマの外観プロパティをカスタマイズします | Sf で始まるコントロール |
CanOverrideStyle | テーマによるユーザーのカスタマイズの上書きを許可します | Theme Studio 対応コントロール |
利用可能なテーマ
定義済みテーマ(組み込み)
- Office2007:Blue、Black、Silver、Managed
- Office2010:Blue、Black、Silver、Managed
- Office2013:White、Dark Gray、Black、Colorful
- Metro
別アセンブリのテーマ
- Office2016:White、Dark Gray、Black、Colorful(
Syncfusion.Office2016Theme.WinForms.dllが必要です) - Office2019:Colorful(
Syncfusion.Office2019Theme.WinForms.dllが必要です) - HighContrast:Black(
Syncfusion.HighContrastTheme.WinForms.dllが必要です)
よくある使用例
- アプリケーション全体で統一されたスタイル:すべてのフォームとコントロールに一貫したテーマを適用します
- モダンな UI の外観:現代的な外観にするため、Office2016/2019 のテーマを使用します
- ダークモードのサポート:ダークテーマ(Office2016Black、Office2016DarkGray)を実装します
- アクセシビリティへの準拠:アクセシビリティのために HighContrast テーマを使用します
- テーマの動的切り替え:ユーザー設定に基づいて、実行時にテーマを変更します
- フォームごとのテーマ設定:同じアプリケーション内のフォームごとに異なるテーマを適用します
重要な注意事項
- アセンブリの読み込み:別アセンブリが必要なテーマを適用する前に、必ず
LoadAssembly()を呼び出してください - アプリケーション全体のテーマ:メインフォームの初期化前に(Program.cs で)
ApplicationVisualThemeを設定してください - コンテナーのテーマ設定:効率化のため、個々のコントロールではなくフォーム/コンテナーにテーマを適用してください
- 上書きの動作:テーマは
CanOverrideStyleプロパティに従ってカスタマイズを上書きするかどうかを制御します
トラブルシューティング
テーマが適用されない場合:
LoadAssembly()を使用してテーマアセンブリが読み込まれていることを確認してくださいControlsプロパティが正しく設定されていることを確認してください- テーマ名のスペルが正確であること(大文字と小文字を区別)を確認してください
カスタムテーマが機能しない場合:
- カスタムテーマアセンブリがプロジェクトで参照されていることを確認してください
- テーマを適用する前に
LoadAssembly()が呼び出されていることを確認してください - テーマ名がアセンブリ名と完全に一致することを確認してください
外観のカスタマイズが反映されない場合:
- Theme Studio ベースのテーマ(Office2019Colorful、HighContrastBlack)を使用していることを確認してください
- カスタマイズを保持する場合は、
CanOverrideStyleがfalseに設定されていることを確認してください - Sf 以外のコントロールには
ThemeStyleを、Sf で始まるコントロールにはStyleを使用してください