syncfusion-winforms-main-frame-bar-manager について
Windows Forms アプリのメニューとツールバーを管理する Syncfusion MainFrameBarManager の開発ガイドです。階層型コマンド、カスタマイズ、キーボード操作、状態保存、MDI メニューの統合を説明します。
主な機能
- 01階層型メニューとツールバーの構築
- 02メニューへの対話型コントロール追加
- 03ショートカットとニーモニックの設定
- 04ユーザーカスタマイズの保存
- 05MDI アプリでのメニュー統合
- 06取り外し可能なコマンドバーの作成
活用シーン
- 01入れ子項目を持つファイルメニューの作成
- 02ツールバーへの検索や選択コントロール追加
- 03ユーザーによるツールバー配置の保存
- 04MDI ウィンドウ間でのメニュー統合
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ syncfusion/ winforms-ui-components-skills --skill syncfusion-winforms-main-frame-bar-managerインストール後、Claude Code で/syncfusion-winforms-main-frame-bar-managerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/detachable-command-bars.mdgetting-started.mdinteractive-features.mdkeyboard-support.mdmenu-item-types.mdmenu-items-via-code.mdmenu-items-via-designer.mdstate-persistence-mdi.md詳細
Syncfusion WinForms MainFrameBarManager の実装
このスキルを使用する場面
MainFrameBarManager コンポーネントは、次のような場合に不可欠です。
- 階層型のメニュー構造(ファイル、編集、表示メニューとサブメニュー)を作成する
- カスタマイズ可能なツールバーとコマンドバーを構築する
- メニュー項目にキーボードショートカットとニーモニックを追加する
- コンテキストメニューとインタラクティブなツールチップを実装する
- メニューを統合した MDI(マルチドキュメントインターフェイス)アプリケーションに対応する
- アプリケーションのセッション間でメニューとツールバーの状態を保持する
- エンドユーザーが実行時にメニューのレイアウトをカスタマイズできるようにする
このコンポーネントは XP Menus Framework パターンに従っており、Windows Forms アプリケーション向けにプロフェッショナルなエンタープライズグレードのメニュー管理システムを提供します。
クイックスタートの例
// Create MainFrameBarManager
MainFrameBarManager mainFrameBarManager1 = new MainFrameBarManager();
mainFrameBarManager1.Style = Syncfusion.Windows.Forms.VisualStyle.Office2016Colorful;
mainFrameBarManager1.Form = this;
// Create a bar (menu container)
Bar fileBar = new Syncfusion.Windows.Forms.Tools.XPMenus.Bar();
fileBar.BarName = "File";
fileBar.Caption = "File";
fileBar.Manager = mainFrameBarManager1;
// Create parent menu item
ParentBarItem fileMenu = new ParentBarItem();
fileMenu.Text = "&File";
// Create sub-menu items
BarItem newItem = new BarItem() { Text = "&New" };
BarItem openItem = new BarItem() { Text = "&Open" };
BarItem exitItem = new BarItem() { Text = "E&xit" };
// Assign shortcuts and mnemonics
newItem.Shortcut = Shortcut.CtrlN;
openItem.Shortcut = Shortcut.CtrlO;
exitItem.Shortcut = Shortcut.AltF4;
// Build hierarchy
fileMenu.Items.AddRange(new BarItem[] { newItem, openItem, exitItem });
fileBar.Items.Add(fileMenu);
// Add to manager
mainFrameBarManager1.Items.AddRange(new BarItem[] { fileMenu, newItem, openItem, exitItem });
mainFrameBarManager1.Bars.Add(fileBar);
mainFrameBarManager1.Categories.Add("Menu");
一般的なパターン
パターン 1:複数レベルのメニューを作成する
サブメニュー(ファイル → 最近使った項目 → ドキュメント 1)には、入れ子になった ParentBarItem を作成します。関連する項目を親コンテナーの下にまとめます。
パターン 2:インタラクティブなコントロールを追加する
色選択には PopupControlContainer を含む DropDownBarItem、選択項目には ComboBoxBarItem、入力フィールドには TextBoxBarItem を使用します。
パターン 3:カスタマイズを実装する
AutoPersistCustomization を有効にすると、ユーザーがメニュー項目を並べ替え、その設定を自動的に保存できるようになります。
パターン 4:MDI アプリケーションとの統合
親フォームには MainFrameBarManager、子フォームには ChildFrameBarManager を使用します。RegisterMdiChildTypes() を呼び出すと、メニューが自動的に統合されます。
パターン 5:キーボード操作
Shortcut プロパティを設定し、Text で & 記号を使ってニーモニックを指定します(例:「&Save」は Alt+S を割り当てます)。
主なプロパティ
| プロパティ | 型 | 目的 |
|---|---|---|
| Form | Form | メニューマネージャーを親フォームに関連付けます |
| Style | VisualStyle | ビジュアルスタイル(Office2016、XPBlue など)を設定します |
| Bars | BarCollection | Bar インスタンス(メニュー、ツールバー)のコレクションです |
| Items | BarItemCollection | このマネージャーが管理するすべての BarItem インスタンスです |
| Categories | StringCollection | カスタマイズ UI でメニュー項目を整理するためのカテゴリです |
| AutoLoadToolBarPositions | bool | 起動時に保存済みのツールバーの位置を自動的に読み込みます |
| AutoPersistCustomization | bool | メニューとツールバーのカスタマイズを自動的に保存します |
| DetachedCommandBars | CommandBarCollection | 切り離し可能な CommandBar インスタンスのコレクションです |
ドキュメントとナビゲーションガイド
はじめに
📄 参照先: references/getting-started.md
- NuGet パッケージのセットアップとアセンブリ参照
- MainFrameBarManager インスタンスの作成
- ビジュアルスタイルとフォームの関連付けの設定
- ライセンスキーの設定
メニューの構築
📄 参照先: references/menu-items-via-code.md
- Bar インスタンスをプログラムで作成する
- BarItem と ParentBarItem を追加する
- 子項目の階層とサブメニュー
- コード例を使ったイベントハンドラーの設定
📄 参照先: references/menu-items-via-designer.md
- デザイナーを使ったメニューの作成(ドラッグ&ドロップ)
- バーと項目のカスタマイズダイアログ
- UI によるビジュアルな配置
- アセンブリ参照の自動追加
メニュー項目の種類と機能
📄 参照先: references/menu-item-types.md
- BarItem(基本的なクリック可能項目)
- ParentBarItem(サブメニューのコンテナー)
- DropDownBarItem(カスタムポップアップコントロール)
- ComboBoxBarItem(ドロップダウン選択項目)
- StaticBarItem(ラベル形式の表示項目)
- TextBoxBarItem(テキスト入力フィールド)
- ToolBarListBarItem(ツールバーのカスタマイズオプション)
インタラクティブ機能
📄 参照先: references/interactive-features.md
- SuperTooltip のセットアップと外観のカスタマイズ
- コンテキストメニューとの統合
- ツールチップの表示制御
- 高度なツールチップエディターの設定
キーボードとアクセシビリティ
📄 参照: references/keyboard-support.md
- メニュー項目へのキーボードショートカットの割り当て
- & 記号を使ったニーモニックテキストの実装
- ShowMnemonicUnderlinesAlways プロパティ
- キーボードナビゲーションのパターン
状態の永続化と MDI
📄 参照: references/state-persistence-mdi.md
- AutoLoadToolBarPositions による状態の永続化の有効化
- カスタマイズの自動シリアル化
- MDI 親フォームと子フォームの統合
- ChildFrameBarManager とメニューのマージ
- 明示的なマージを行う RegisterMdiChildTypes()
- MDI マージ動作のマトリックス
分離可能なツールバー
📄 参照: references/detachable-command-bars.md
- CommandBar の作成とドッキング
- DockState プロパティの設定
- DetachedCommandBars コレクションへの追加
- デザイナーを使う方法とコードベースの方法
一般的な使用例
ファイルメニュー: ParentBarItem の階層を使って、「新規」「開く」「保存」「最近使ったドキュメント」「終了」の項目を含む標準的なファイルメニューを作成します。
ツールバー: BarName が異なる複数の Bar インスタンスを使って個別のツールバーを作成し、それぞれを異なる位置にドッキングします。
検索バー: TextBoxBarItem または ComboBoxBarItem をツールバーに追加して、検索/フィルター機能を実装します。
メニュー内のカラーピッカー: ColorPickerUIAdv コントロールを含む PopupControlContainer とともに DropDownBarItem を使います。
ローカライズされたメニュー: Text プロパティにローカライズされた文字列を設定します。ニーモニックとショートカットはすべての言語で動作します。
カスタムショートカット: ショートカットを設定しない項目には Shortcut.None を割り当てるか、Shortcut 列挙型を使って独自のキーの組み合わせを設定します。