mcpField
S
syncfusion-winforms-autolabel

syncfusion-winforms-autolabel

github.com/syncfusionデザイン・UI278 回インストール1 週間前に更新
リポジトリ

syncfusion-winforms-autolabel について

Syncfusion の WinForms AutoLabel を使い、ラベルとコントロールを組み合わせて位置を連動させる開発者向けスキルです。動的なフォームレイアウトにも対応します。

主な機能

  1. 01ラベルと任意のコントロールのペア設定
  2. 02コントロール移動に合わせたラベルの再配置
  3. 03相対位置と間隔の設定
  4. 04FlowLayout でペアをひとまとまりに配置
  5. 05ラベルの外観とテーマの設定

活用シーン

  1. 01動的なフォームレイアウトの構築
  2. 02移動するコントロールにラベルを追従
  3. 03FlowLayout でフォーム項目を配置
  4. 04ラベルへの統一テーマの適用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/syncfusion/winforms-ui-components-skills --skill syncfusion-winforms-autolabel

インストール後、Claude Code で/syncfusion-winforms-autolabelを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
appearance-theming.md
events.md
getting-started.md
overview.md
positioning-spacing.md

詳細

Syncfusion WinForms AutoLabel コントロール

AutoLabel コントロールは Label を参考にしたコントロールで、ラベルをほかの任意のコントロールと組み合わせることができます。組み合わせると、ラベルが付けられたコントロールの位置が変わるたびに AutoLabel が自動的に位置を調整するため、ラベルとコントロールの位置を常に同期できます。

この機能を使用する場面

次のような場合に AutoLabel コントロールを使用します。

  • 関連付けられたコントロールに自動的に追従するラベルを追加する
  • コントロールが移動する動的なフォームレイアウトを作成する
  • FlowLayout マネージャーを使用して複雑なフォームデザインを実装する
  • コントロールに対するラベルの位置を常に適切に保つ
  • コントロールを動的にサイズ変更または再配置するフォームを作成する
  • ラベルとコントロールの間隔が統一された、プロフェッショナルなフォームを作成する
  • 自動配置によってフォームレイアウトの管理を簡素化する

インストール

NuGet によるインストール
Install-Package Syncfusion.Shared.Base
アセンブリ参照

次のアセンブリへの参照を追加します。

  • Syncfusion.Shared.Base.dll

クイックスタート

基本設定
using System;
using System.Windows.Forms;
using Syncfusion.Windows.Forms.Tools;

namespace AutoLabelDemo
{
    public partial class Form1 : Form
    {
        private AutoLabel autoLabel1;
        private TextBoxExt textBoxExt1;
        
        public Form1()
        {
            InitializeComponent();
            
            // Create a control to label (e.g., TextBox)
            textBoxExt1 = new TextBoxExt();
            textBoxExt1.Location = new System.Drawing.Point(150, 50);
            textBoxExt1.Size = new System.Drawing.Size(200, 20);
            
            // Create AutoLabel
            autoLabel1 = new AutoLabel();
            autoLabel1.Text = "Username:";
            autoLabel1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular);
            
            // Pair the label with the control
            autoLabel1.LabeledControl = textBoxExt1;
            autoLabel1.Position = AutoLabelPosition.Left;
            autoLabel1.Gap = 10;
            
            // Add to form
            this.Controls.Add(textBoxExt1);
            this.Controls.Add(autoLabel1);
        }
    }
}
デザイナーでの設定
  1. ツールボックスから AutoLabel コントロールをフォームにドラッグします
  2. 別のコントロール(例:TextBox)をフォームにドラッグします
  3. AutoLabel を右クリックし、[Properties]を選択して、LabeledControl に対象のコントロールを設定します
  4. Position と Gap のプロパティを設定します
  5. ラベルがコントロールに対して自動的に配置されます

基本概念

ラベルとコントロールのペアリング

AutoLabel は LabeledControl プロパティを通じて任意のコントロールとペアになります。ペアになると、ラベルはコントロールの位置を自動的に追跡します。

自動的な位置調整

ラベルが付けられたコントロールが移動すると、AutoLabel は Position と Gap の設定に基づいて自動的に位置を調整します。

FlowLayout との連携

FlowLayout マネージャーは、AutoLabel とラベルが付けられたコントロールのペアを単一のまとまりとして扱い、柔軟な動的フォームレイアウトを実現します。

ナビゲーションガイド

🚀 はじめに

📄 参照先: references/getting-started.md

  • インストールとアセンブリの配置
  • デザイナーでの AutoLabel の追加
  • プログラムによる AutoLabel の追加
  • コントロールへのラベル付け
  • 基本設定
  • 最初の AutoLabel アプリケーションの実行
📐 位置と間隔

📄 参照先: references/positioning-spacing.md

  • Position プロパティ(Left、Top、Side、Custom)
  • ラベルとコントロールの間隔を設定する Gap
  • 細かな調整に使う DX プロパティと DY プロパティ
  • マウスによるカスタム配置
  • 間隔設定のベストプラクティス
🎨 外観とテーマ設定

📄 参照先: references/appearance-theming.md

  • ラベルのサイズを自動調整する AutoSize
  • BackColor と ForeColor のカスタマイズ
  • フォント設定
  • TextAlign プロパティ
  • SkinManager によるテーマ設定(Office 2016 スタイル)
  • ビジュアルスタイル
⚡ イベント

📄 参照先: references/events.md

  • PropertyChanged イベント
  • ラベルとコントロールの更新処理
  • イベント引数
  • 一般的なイベントの使用例
🎯 概要と使用例

📄 参照先: references/overview.md

  • コンポーネントのアーキテクチャ
  • FlowLayout との連携
  • フォームレイアウトのパターン
  • AutoLabel と標準の Label の使い分け

一般的なパターン

パターン 1:ラベルを左揃えにしたシンプルなフォーム
// Create form fields with left-aligned labels
AutoLabel nameLabel = new AutoLabel();
nameLabel.Text = "Name:";
nameLabel.LabeledControl = nameTextBox;
nameLabel.Position = AutoLabelPosition.Left;
nameLabel.Gap = 10;

AutoLabel emailLabel = new AutoLabel();
emailLabel.Text = "Email:";
emailLabel.LabeledControl = emailTextBox;
emailLabel.Position = AutoLabelPosition.Left;
emailLabel.Gap = 10;

this.Controls.Add(nameTextBox);
this.Controls.Add(nameLabel);
this.Controls.Add(emailTextBox);
this.Controls.Add(emailLabel);
パターン 2:ラベルを上揃えにしたフォーム(縦型フォーム)
AutoLabel addressLabel = new AutoLabel();
addressLabel.Text = "Address:";
addressLabel.LabeledControl = addressTextBox;
addressLabel.Position = AutoLabelPosition.Top;
addressLabel.Gap = 5;
addressLabel.AutoSize = true;
パターン 3:ラベルのカスタム配置
AutoLabel customLabel = new AutoLabel();
customLabel.Text = "Custom:";
customLabel.LabeledControl = myControl;
customLabel.Position = AutoLabelPosition.Custom;
customLabel.DX = -100;  // 100 pixels to the left
customLabel.DY = 15;    // 15 pixels down from control top
パターン 4:AutoLabel を使ったテーマ設定済みフォーム
using Syncfusion.Windows.Forms;

// Apply Office 2016 theme to all labels
SkinManager.SetVisualStyle(label1, VisualTheme.Office2016Colorful);
SkinManager.SetVisualStyle(label2, VisualTheme.Office2016Colorful);
SkinManager.SetVisualStyle(label3, VisualTheme.Office2016Colorful);
パターン 5:AutoLabel ペアを使った FlowLayout
FlowLayoutPanel flowPanel = new FlowLayoutPanel();
flowPanel.FlowDirection = FlowDirection.TopDown;
flowPanel.Dock = DockStyle.Fill;

// FlowLayout treats AutoLabel + Control as one unit
flowPanel.Controls.Add(firstNameTextBox);
flowPanel.Controls.Add(firstNameLabel);  // Paired with firstNameTextBox
flowPanel.Controls.Add(lastNameTextBox);
flowPanel.Controls.Add(lastNameLabel);   // Paired with lastNameTextBox

// Labels automatically move with their controls
this.Controls.Add(flowPanel);

主要プロパティのリファレンス

プロパティ型デフォルト説明
LabeledControlControlnullこのラベルが対応するコントロール
PositionAutoLabelPositionLeft相対位置:Left、Top、Side、Custom
Gapint0ラベルとコントロール間の水平および垂直方向の間隔
DXint0ラベルの左端からコントロールの左端までの水平方向の距離
DYint0ラベルの上端からコントロールの上端までの垂直方向の距離
AutoSizeboolfalseフォントサイズに応じて自動的にサイズを変更します
Textstring""ラベルのテキスト内容
TextAlignContentAlignmentTopLeftラベル内のテキストの配置
BackColorColorControlラベルの背景色
ForeColorColorControlTextラベルのテキスト色
FontFont-ラベルのテキストに使用するフォント

位置オプション

位置動作
Leftラベルをコントロールの左側に表示します
Topラベルをコントロールの上側に表示します
Sideラベルをコントロールの横(右側)に表示します
CustomDX と DY、またはマウスでのドラッグを使用して手動で位置を指定します

イベント

イベント説明
PropertyChangedLabeledControl、Gap、Position のプロパティが変更されたときに発生します

ベストプラクティス

  1. 追加する前にペアを設定する:適切に初期化するため、フォームに追加する前に LabeledControl を設定します

  2. 間隔には Gap を使用する:一貫した間隔を保つため、手動で位置を指定する代わりに Gap プロパティを使用します

  3. 適切な位置を選択する:

    • 横方向のフォームでは Left を使用します
    • 縦方向に積み重ねるフォームでは Top を使用します
    • 必要な場合に限り Custom を使用します
  4. AutoSize を有効にする:テキストを折り返さないラベルでは、AutoSize = true を設定します

  5. FlowLayout との連携:FlowLayout を活用して、ラベルとコントロールのペアをひとまとまりとして扱います

  6. テーマを統一する:フォーム内のすべての AutoLabel に同じビジュアルスタイルを適用します

  7. 移動をテストする:コントロールの位置を動的に変更したとき、ラベルが追従することを確認します

  8. 重なりを避ける:Gap と位置の設定により、ラベルとコントロールが重ならないようにします

ビジュアルスタイル

SkinManager でサポートされているテーマ:

  • Office2016Colorful
  • Office2016Black
  • Office2016DarkGray
  • Office2016White
SkinManager.SetVisualStyle(this.autoLabel1, VisualTheme.Office2016Colorful);

フレームワークのサポート

  • .NET Framework 4.5 以降
  • .NET 6.0、.NET 7.0、.NET 8.0(Windows)
  • .NET Core 3.1(Windows)

追加リソース

トラブルシューティング

問題:ラベルがコントロールと一緒に移動しない

  • LabeledControl プロパティが設定されていることを確認します
  • ラベルとコントロールの両方が同じコンテナーに追加されていることを確認します
  • コントロールの位置が実際に変更されていることを確認します

問題:ラベルの位置がずれている

  • 間隔を調整するには Gap プロパティを変更します
  • 必要に応じて DX と DY を使用して微調整します
  • Position プロパティが正しく設定されていることを確認します

問題:ラベルがコントロールに重なる

  • Gap の値を大きくします
  • 別の Position を選択します(例:Left ではなく Top)
  • コントロールのサイズに十分な余裕があることを確認します

問題:テーマが適用されない

  • SkinManager アセンブリが参照されていることを確認します
  • テーマがサポートされていることを確認します(Office 2016 のバリエーションのみ)
  • コントロールをフォームに追加した後でテーマを適用します

コメント