syncfusion-winforms-tabbed-mdi-manager について
Windows Forms 開発者向けに、MDI 子ウィンドウをタブで整理する Syncfusion TabbedMDIManager の使い方を解説します。タブグループ、外観、イベント処理、レイアウトの保存と復元を扱います。
主な機能
- 01MDI ウィンドウをタブで整理
- 02サイズ変更可能なタブグループ
- 03タブ位置・テーマ・スタイルの設定
- 04タブイベントとメニューの処理
- 05ウィンドウレイアウトの保存と復元
活用シーン
- 01複数ドキュメント編集画面の構築
- 02データ分析ツールのウィンドウ整理
- 03レイアウト復元に対応した MDI アプリの作成
- 04Visual Studio 風のタブ画面の実装
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ syncfusion/ winforms-ui-components-skills --skill syncfusion-winforms-tabbed-mdi-managerインストール後、Claude Code で/syncfusion-winforms-tabbed-mdi-managerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/appearance-and-styling.mdbutton-settings.mdevents-and-interaction.mdgetting-started.mdserialization-and-state.mdtab-alignment.mdtab-groups.mdtab-styles-and-themes.md詳細
Syncfusion Windows Forms TabbedMDIManager の実装
TabbedMDIManager は、MDI(マルチドキュメントインターフェイス)アプリケーションにモダンなタブ付きインターフェイスを提供する、強力な Windows Forms コントロールです。既定のカスケード/タイル表示モードを、Visual Studio .NET IDE のようなプロフェッショナルなタブレイアウトに置き換えます。
このスキルを使用する場面
次のような場合はいつでも、このスキルを使用してください。
- デスクトップアプリケーション用のタブ付き MDI インターフェイスを作成する
- 複数の子ウィンドウをタブとして整理する
- サイズ変更可能なスプリッターを備えた複数のタブグループをサポートする
- タブの外観、色、フォント、スタイルをカスタマイズする
- プロフェッショナルなテーマ(Office 2007/2016、Metro など)を適用する
- タブのイベントとユーザー操作を処理する
- シリアル化を使用してアプリケーションのレイアウトを保存および復元する
- ボタンコントロール(閉じる、ドロップダウン)を設定する
- ツールチップとコンテキストメニューを有効にする
- タブを異なる位置(上、下、左、右)に配置する
コンポーネントの概要
主な機能:
- ✅ スプリッターに対応した複数のタブグループ
- ✅ 15 種類以上の組み込みテーマとタブスタイル
- ✅ 個別および動的なタブ制御
- ✅ 色、フォント、外観の完全なカスタマイズ
- ✅ シリアル化に対応(XML、Binary、Isolated Storage)
- ✅ イベント駆動型アーキテクチャ
- ✅ ツールチップとコンテキストメニューに対応
- ✅ ボタンコントロール(閉じるボタン、ドロップダウン)
- ✅ RTL に対応
- ✅ タブの配置(上、下、左、右)
ドキュメントのナビゲーションガイド
はじめに
📄 参照: references/getting-started.md
- インストールと NuGet パッケージのセットアップ
- 必要なアセンブリ参照
- デザイナーとコードによるコントロールの追加
- 最初の MDI 子フォームの作成
- MDI コンテナーへの関連付け
- 基本的な使用パターン
タブの配置と位置
📄 参照: references/tab-alignment.md
- タブを上、下、左、右に配置する
- TabControlAdded イベントの使用方法
- 異なる向きでのタブの配置
- 配置を動的に変更する
タブグループと整理
📄 参照: references/tab-groups.md
- 複数のタブグループを作成する
- スプリッターでグループのサイズを変更する
- 水平および垂直方向に配置する
- グループの数とレイアウトを制御する
- フォームを特定のタブグループに関連付ける
- カスタムのタブ付きレイアウトを作成する
ボタンの設定
📄 参照: references/button-settings.md
- ドロップダウンボタンの表示とスタイル設定
- 閉じるボタンの設定
- 個別のタブ用閉じるボタン
- マウスの中ボタンのクリックで閉じる
- ボタンの色のカスタマイズ
- ShowCloseButtonForForm メソッドの使用方法
外観とスタイル
📄 参照: references/appearance-and-styling.md
- タブのテキストとアイコンの設定
- 15 種類以上のタブスタイル(2D、3D、Office、Metro など)
- アクティブ/非アクティブなタブの色
- タブ用のカスタムフォント
- アイコンのサイズと配置
- タブパネルのカスタマイズ
- 境界線と背景の色
タブスタイルとテーマ
📄 参照: references/tab-styles-and-themes.md
- 利用可能なすべてのタブスタイルの概要
- Office 2007/2016 の配色
- OneNote と Metro のスタイル
- IE7 と WhidbeyStyle のオプション
- ウィンドウレイアウトのスタイル(カスケード、タイルなど)
- スタイルを動的に切り替える
- Office2007ColorScheme プロパティ
イベントと操作
📄 参照: references/events-and-interaction.md
- BeforeMDIChildAdded イベント
- TabControlAdded イベントと TabControlAdding イベント
- TabControlRemoved イベント
- BeforeDropDownPopup イベント
- UnLockingMdIClient イベント
- イベント駆動型のカスタマイズ
- コンテキストメニューのカスタマイズ
- ツールチップへの対応
シリアル化と状態管理
📄 参照: references/serialization-and-state.md
- AppStateSerializer を使用してタブグループのレイアウトを保存する
- アプリケーションの起動時に保存済みのレイアウトを読み込む
- シリアル化形式(XML、Binary、Isolated Storage)
- メモリストリームのシリアル化
- ClearSavedTabGroupState の使用方法
- AppStateSerializer のシングルトンパターン
- アプリケーションの状態を復元する
クイックスタートの例
// Step 1: Add namespace
using Syncfusion.Windows.Forms.Tools;
// Step 2: Create TabbedMDIManager
TabbedMDIManager tabbedMDIManager = new TabbedMDIManager();
// Step 3: Configure MDI container
this.IsMdiContainer = true;
tabbedMDIManager.AttachToMdiContainer(this);
// Step 4: Apply theme
tabbedMDIManager.ThemesEnabled = true;
tabbedMDIManager.TabStyle = typeof(Syncfusion.Windows.Forms.Tools.TabRendererOffice2016White);
// Step 5: Enable buttons
tabbedMDIManager.CloseButtonVisible = true;
tabbedMDIManager.DropDownButtonVisible = true;
// Step 6: Create child window
Form childForm = new Form() { Text = "Document 1", MdiParent = this };
childForm.Show();
一般的なパターン
パターン 1:複数のタブグループ
// Create multiple tab groups by using TabbedGroupedMDIManager
TabbedGroupedMDIManager tabbedMDIManager = new TabbedGroupedMDIManager();
tabbedMDIManager.AttachToMdiContainer(this);
// Forms added will be grouped as tabs
Form doc1 = new Form() { Text = "Document 1", MdiParent = this };
Form doc2 = new Form() { Text = "Document 2", MdiParent = this };
doc1.Show();
doc2.Show();
パターン 2:カスタムタブのスタイル
// Handle TabControlAdded to customize each tab group
tabbedMDIManager.TabControlAdded += (sender, args) =>
{
args.TabControl.Alignment = TabAlignment.Bottom;
args.TabControl.Font = new Font("Arial", 10, FontStyle.Bold);
};
パターン 3:レイアウトの保存と復元
// On application close: Save layout
AppStateSerializer serializer = new AppStateSerializer(SerializeMode.XMLFile, "AppState");
tabbedMDIManager.SaveTabGroupStates(serializer);
serializer.PersistNow();
// On application startup: Load layout
AppStateSerializer serializer = new AppStateSerializer(SerializeMode.XMLFile, "AppState");
tabbedMDIManager.LoadTabGroupStates(serializer);
パターン 4:カスタムコンテキストメニュー
// Add custom items to tab context menu
using Syncfusion.Windows.Forms.Tools.XPMenus;
ParentBarItem contextMenu = new ParentBarItem();
BarItem customItem = new BarItem() { Text = "Custom Action", MergeOrder = 30 };
contextMenu.Items.Add(customItem);
tabbedMDIManager.ContextMenuItem = contextMenu;
主要なプロパティの概要
| プロパティ | 用途 | 例 |
|---|---|---|
ThemesEnabled | テーマサポートを有効または無効にする | tabbedMDIManager.ThemesEnabled = true; |
TabStyle | タブのビジュアルスタイルを設定する | typeof(TabRenderer2D) を TabRendererOffice2016Black にする |
CloseButtonVisible | 閉じるボタンを表示または非表示にする | true にすると閉じるボタンを表示 |
DropDownButtonVisible | ドロップダウンボタンを表示または非表示にする | true にするとドロップダウンを表示 |
ShowCloseButton | タブごとに閉じるボタンを表示する | true にすると各タブに閉じるボタンを表示 |
ShowCloseButtonForActiveTabOnly | アクティブなタブにのみ閉じるボタンを表示する | true にするとアクティブなタブに限定 |
UseIconsInTabs | タブヘッダーにアイコンを表示する | true にするとアイコンを表示 |
ImageSize | タブアイコンのサイズ | new Size(16, 16) |
ActiveTabBackColor | アクティブなタブの背景色 | Color.Blue |
TabBackColor | 非アクティブなタブの背景色 | Color.Gray |
ActiveTabFont | アクティブなタブのフォントスタイル | new Font("Arial", 10, FontStyle.Bold) |
TabFont | 非アクティブなタブのフォントスタイル | new Font("Arial", 10) |
Alignment | タブの位置(TabControl 経由) | TabAlignment.Bottom、Left、Right |
CloseOnMiddleButtonClick | マウスの中央ボタンでタブを閉じる | true にすると有効化 |
一般的な使用例
使用例 1:Visual Studio スタイルの MDI
タブ付きレイアウト、複数のタブグループ、VS に似た外観を備えたプロフェッショナルな MDI アプリケーションを作成します。
使用例 2:ドキュメントエディター
開いているドキュメントごとのタブ、テーマ、以前のセッションを復元するためのシリアル化機能を備えた複数ドキュメント対応のエディターを構築します。
使用例 3:データ分析ツール
複数の分析タブを備え、カスタムスタイルを適用できる、機能ごとにグループ化可能なアプリケーションを作成します。
使用例 4:プロジェクト管理
さまざまなタスクのタブ、カスタマイズ可能な外観、セッション間で保持されるレイアウトを備えた UI を構築します。
次のステップ
- 「はじめに」から開始して、最初の TabbedMDI アプリケーションを設定します
- 複数のサイズ変更可能なドキュメント領域が必要な場合は、タブグループを確認します
- プロフェッショナルなテーマとスタイルを適用するには、外観をカスタマイズします
- イベントとコンテキストメニューを使って、インタラクティブ機能を追加します
- ユーザー設定とレイアウトを保存するには、シリアル化を実装します
追加リソース
- 公式 API リファレンス:TabbedMDIManager
- アセンブリの依存関係:Syncfusion.Tools.Windows, Syncfusion.Shared.Windows