syncfusion-winforms-commandbar について
Syncfusion Windows Forms の CommandBar を実装するための開発者向けスキルです。ドッキングやフローティング、コントロールの配置、外観設定、レイアウト状態の保存を扱います。
主な機能
- 01ドッキングとフローティングに対応するバー
- 02ボタンやメニューなどの配置
- 03外観と操作のカスタマイズ
- 04バーのレイアウト保存と復元
活用シーン
- 01Office風のツールバー画面の構築
- 02バーの配置変更とレイアウト復元
- 03ツールバーへの検索・フィルター追加
- 04下部にドッキングするステータスバーの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ syncfusion/ winforms-ui-components-skills --skill syncfusion-winforms-commandbarインストール後、Claude Code で/syncfusion-winforms-commandbarを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/appearance-customization.mdgetting-started.mdhosting-controls.mdinteractive-features.mdserialization.md詳細
Windows Forms CommandBar の実装
CommandBar コントロールは、Visual Studio や Office のインターフェイスに似たツールバー、リバー、ステータスバーを作成してホストするための包括的なフレームワークを提供します。ドッキング、フローティングウィンドウ、状態の永続化、カスタムコントロールのホストに対応しています。
このスキルを使用するタイミング
次のような場合は CommandBar を使用します。
- カスタマイズ可能なツールバーやステータスバーを作成する
- ドッキング/フローティング機能を備えた Office のような UI を実装する
- ユーザーがバーを移動、並べ替えできるようにする
- セッションをまたいでバーのレイアウト状態を保存、復元する
- ドロップダウン、テキストボックス、ボタンなどのコントロールをホストする
- 複雑な複数バーのコマンドフレームワークを構築する
CommandBar の概要
CommandBar は、複数の CommandBar インスタンスを管理する CommandBarController コンポーネントを介して動作します。各バーはコントロールをホストでき、フォームの各辺にドッキングしたり、独立したウィンドウとしてフローティングしたりでき、状態遷移時にイベントを発生させます。バーをシリアル化して、ユーザーによるカスタマイズを保持できます。
ドキュメントとナビゲーションガイド
はじめに
📄 参照: references/getting-started.md
- アセンブリの依存関係と NuGet のセットアップ
- デザイナーとコードによる CommandBar の追加
- HostForm を使用した CommandBarController の作成
- 子コントロールの追加(単一および複数)
- コード中心の初期化パターン
外観のカスタマイズ
📄 参照: references/appearance-customization.md
- ボタン(閉じる、シェブロン、ドロップダウン)のカスタマイズ
- カーソルとグリッパーの表示制御
- 背景色のカスタマイズ(ドッキングされたバーと CommandBar)
- テキスト表示の設定とフォントのスタイル指定
- 表示プロパティの設定
インタラクティブ機能
📄 参照: references/interactive-features.md
- フローティングバーとフロートモードの折り返し
- ドッキングモードとドック状態の管理
- ドック境界の制限
- イベント処理(状態変更、折り返し、終了)
- イベントのサブスクリプション例一式
コントロールのホスト
📄 参照: references/hosting-controls.md
- ドロップダウン機能のための PopupMenu の統合
- メニュー項目用の XPToolBar の追加
- デザイナーとコードによる統合
- 複雑なレイアウト向けのコンテナパターン
シリアル化
📄 参照: references/serialization.md
- 永続化のサポートと状態管理
- AppStateSerializer クラスの使用方法
- XML、Binary、Registry、IsolatedStorage の形式
- 読み込みと保存のワークフロー
- アプリケーション起動時の状態復元
クイックスタートの例
using Syncfusion.Windows.Forms.Tools;
using System.Windows.Forms;
public partial class Form1 : Form
{
private CommandBarController commandBarController1;
private CommandBar commandBar1;
public Form1()
{
InitializeComponent();
// Create controller
commandBarController1 = new CommandBarController();
commandBarController1.HostForm = this;
// Create command bar
commandBar1 = new CommandBar();
commandBar1.Text = "Main Toolbar";
commandBarController1.CommandBars.Add(commandBar1);
// Add child controls
TextBox textBox1 = new TextBox();
commandBar1.Controls.Add(textBox1);
}
}
よくあるパターン
Office のようなレイアウト
- メインメニュー項目には Top CommandBar を使用します(XPToolBar 経由)
- 書式設定ツールバーには追加の CommandBar を使用します
- 各バーを個別にドッキング/フローティングできるようにします
- AllowedDockBorders を設定して配置場所を制限します
レスポンシブなツールバー
- スペースが限られたレイアウトでは FloatModeWrapping を有効にします
- シェブロンを使ってオーバーフローした項目を処理します
- コンテキストに応じてコントロールを動的に追加します
状態の永続化
- CommandBarController で PersistState を有効にします
- Form_Load イベントで状態を読み込みます
- Form_Closing イベントで状態を保存します
- 保存先の設定に合ったシリアル化形式を使用します
主なプロパティ
CommandBarController
HostForm- すべてのコマンドバーを含むフォーム(必須)CommandBars- CommandBar インスタンスのコレクションPersistState- 状態の永続化を有効/無効にしますBackColor- ドッキングされたバー領域の色Style- 表示スタイル(Office、Metro など)
CommandBar
Text- ドッキング/フローティングモードでの表示名DockState- 現在の位置(Top、Bottom、Left、Right)DisableDocking- ドッキングを禁止します(フローティングモードを強制)DisableFloating- フローティングを禁止します(ドッキングモードを強制)AllowedDockBorders- ドッキングできる辺を制限しますFloatModeWrapping- フローティングモードでのコンテンツの折り返しを有効にしますHideGripper- ドラッグハンドルを非表示にしますHideCloseButton- フローティングモードで閉じるボタンを非表示にしますHideChevron- オーバーフローメニューボタンを非表示にします
一般的な使用例
1. Visual Studio のようなインターフェース
- 異なる機能を持つ複数のドッキングされたツールバー
- フローティング可能なツールウィンドウ
- ユーザーのレイアウト設定を保存
- アプリケーションの再起動後に復元
2. カスタマイズ可能なダッシュボード
- ユーザーが特定のバーの表示/非表示を切り替えられるようにする
- 必要に応じてバーの位置を変更
- 設定にレイアウトを保持
- モードごとに異なるレイアウト
3. 複数のコントロールを備えた単一のツールバー
- 検索用のテキストボックスを配置
- フィルタリング用のドロップダウンを配置
- 操作用のボタンを配置
- ウィンドウのサイズ変更に対応
4. ステータスバーの実装
- CommandBar を下部にドッキング
- ステータスラベルと進捗インジケーターを追加
- フローティングと移動を無効化(DisableDocking = true)
- アプリケーションの状態に応じて内容を更新