mcpField
S
syncfusion-winforms-scheduler

syncfusion-winforms-scheduler

github.com/syncfusion開発260 回インストール1 週間前に更新
リポジトリ

syncfusion-winforms-scheduler について

Windows Forms 開発者向けに、Syncfusion Scheduler のカレンダー画面の実装方法を解説するスキルです。予定管理、繰り返し、ナビゲーション、タッチ操作、外観のカスタマイズを扱います。

主な機能

  1. 01月・日・週・カスタム週表示
  2. 02予定の CRUD とデータバインド
  3. 03繰り返し予定のルール
  4. 04ドラッグ&ドロップとタッチ操作
  5. 05外観とテーマのカスタマイズ

活用シーン

  1. 01Outlook 風カレンダーの開発
  2. 02リソース予約システムの構築
  3. 03イベントと繰り返し予定の管理

インストール

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

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

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

同梱ファイル

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

references/
appointments-and-data.md
customizing-appearance.md
data-provider-xml-implementation.md
getting-started.md
recurrence-appointments.md
touch-and-interaction.md
views-and-navigation.md

詳細

Windows Forms Scheduler(イベントカレンダー)の実装

Syncfusion Windows Forms Scheduler は、Microsoft Outlook に似たスケジュール機能を提供する包括的なカレンダーコントロールです。ユーザーは、複数のビュータイプ(月、日、週、稼働週、カスタム週)で予定を作成、表示、管理でき、繰り返し予定、ドラッグアンドドロップ操作、タッチジェスチャー、豊富なカスタマイズオプションにも対応しています。

このスキルを使用する場面

次のような場合に、このスキルを使用します。

  • Windows Forms アプリケーションでカレンダーとスケジュールのインターフェイスを構築する
  • 月、日、週、稼働週、カスタム週のビューで予定を表示する
  • 繰り返し予定を実装する(毎日、毎週、毎月、毎年、または時間ベースの繰り返し)
  • データ永続化に対応した予定の CRUD 操作(作成、読み取り、更新、削除)を実装する
  • 予定のスケジュール設定や再設定にドラッグアンドドロップ機能を追加する
  • カレンダーの外観(色、テーマ、ヘッダー、ナビゲーション、プライムタイム)をカスタマイズする
  • 最新のデバイス向けにタッチ操作(スワイプ、ズーム、パン)に対応する
  • スケジュールデータをカスタムデータプロバイダーやデータベースにバインドする
  • ナビゲーションカレンダーとタイムスロットを備えたOutlook スタイルのカレンダーアプリケーションを作成する
  • 詳細なスケジュール設定のため、秒/分単位の精度で時間間隔を管理する

コンポーネントの概要

Windows Forms Scheduler コントロールは Grid コントロールを基盤として構築されており、次の機能を提供します。

  • 複数のビュータイプ: 月、日、週、稼働週、カスタム週のビュー
  • ナビゲーションカレンダー: 日付選択用の複数月カレンダー
  • 予定管理: ダイアログベースの編集による完全な CRUD 対応
  • 繰り返しエンジン: 時間ベースの間隔を含む複雑な繰り返しパターン
  • データアーキテクチャ: インターフェイス(IScheduleAppointment、IScheduleDataProvider)を介した柔軟なデータバインディング
  • インタラクティブ機能: ドラッグアンドドロップ、サイズ変更、コンテキストメニュー、ツールチップ
  • タッチ対応: スワイプスクロール、ズーム、ジェスチャーベースのナビゲーション
  • 外観のカスタマイズ: すべての UI 要素に対する豊富なスタイル設定オプション
  • テーマ対応: Office 2003/2007/2010、Metro、カスタムテーマ

主要コンポーネント:

  • ScheduleControl: すべてのスケジュール機能を含むメインのユーザーコントロール
  • ScheduleAppointment: 個々の予定を表すデータオブジェクト
  • ScheduleDataProvider: データ管理と永続化のための基底クラス
  • NavigationCalendar: 日付ナビゲーション用の複数月カレンダー
  • キャプションパネル: ナビゲーションボタンとヘッダー表示
  • ナビゲーションパネル: ナビゲーションカレンダーとカスタムコントロールを含むサイドバー

名前空間: Syncfusion.Windows.Forms.Schedule

アセンブリの依存関係:

  • Syncfusion.Grid.Base.dll
  • Syncfusion.Grid.Windows.dll
  • Syncfusion.Schedule.Base.dll
  • Syncfusion.Schedule.Windows.dll
  • Syncfusion.Shared.Base.dll
  • Syncfusion.Tools.Windows.dll

NuGet に関するガイダンス:

  • 利用可能な最新バージョンの Syncfusion.Schedule.Windows をインストールします
Install-Package Syncfusion.Schedule.Windows -Version *

ドキュメントとナビゲーションガイド

はじめに

📄 参照: references/getting-started.md

  • インストールとアセンブリの配置
  • デザイナーまたはコードを使用した ScheduleControl の作成
  • ArrayListDataProvider(組み込みソリューション)によるデータバインディング
  • 基本的な予定の CRUD 操作(挿入、編集、削除)
  • XML シリアル化による予定データの保存と読み込み
  • 予定の文字色の設定
XML データプロバイダーの実装

📄 参照: references/data-provider-xml-implementation.md

  • データ管理に組み込みの ArrayListDataProvider を使用する
  • データプロバイダーに統合された SaveXML メソッドと LoadXML メソッド
  • XML ファイルへの永続化を備えたインメモリデータ管理
  • FileName プロパティと IsDirty プロパティによるファイル状態の追跡
  • コード例とパターン一式
  • カスタムクラスが不要な本番環境対応ソリューション
ビューとナビゲーション

📄 読む: references/views-and-navigation.md

  • スケジュールのビューの種類(月、日、週、稼働日、カスタム週)
  • プログラムによるビューの変更とコンテキストメニューからの変更
  • ナビゲーションカレンダーの構成とプロパティ
  • ナビゲーションパネルとキャプションパネルのカスタマイズ
  • 週番号の表示とカレンダーのレイアウト
  • 日付のナビゲーションと選択イベント
予定とデータ管理

📄 読む: references/appointments-and-data.md

  • ScheduleAppointment クラスのプロパティ(StartTime、EndTime、Subject、Content など)
  • ScheduleAppointmentList コレクションのメソッド
  • ScheduleDataProvider 基底クラスの実装
  • データインターフェイス(IScheduleAppointment、IScheduleAppointmentList、IScheduleDataProvider)
  • カスタムデータプロバイダーの作成
  • ドロップダウンリストのデータ(ラベル、マーカー、リマインダー、場所、担当者)
  • CommitChanges と SaveOnCloseBehavior
  • NewScheduleAppointment、AddItem、RemoveItem メソッド
繰り返しの予定

📄 読む: references/recurrence-appointments.md

  • 繰り返しルールの構文と形式
  • ルールの種類(毎日、平日、週末、週、月、四半期、年ごと)
  • 時間単位の繰り返し(SEC ごと、MIN ごと、HR ごと)
  • 1 時間未満の間隔に対応する AllowSecondsInAppointment プロパティ
  • 予定ダイアログ UI から繰り返しを追加する方法
  • RecurrenceRule プロパティを使ってプログラムから繰り返しを追加する方法
  • IRecurringScheduleAppointment および IRecurringScheduleDataProvider インターフェイス
  • 終了日や間隔を含む複雑な繰り返しパターン
外観のカスタマイズ

📄 読む: references/customizing-appearance.md

  • Appearance プロパティと ScheduleAppearance オブジェクト
  • 境界線のカスタマイズ(ClickItemBorderColor、DragColor、SolidBorderColor)
  • キャプションとヘッダーのカスタマイズ
  • 日付と時刻の表示項目の書式文字列
  • ナビゲーションカレンダーの外観(色、選択、今日を示すマーカー)
  • プライムタイムの設定(開始/終了時刻と色)
  • 時刻列のカスタマイズ(24 時間形式、フォントサイズ、色)
  • ビジュアルスタイルと Metro テーマのサポート
  • ThemesEnabled プロパティ
  • ThemeChanged イベント: scheduleControl1.GetScheduleHost().ThemeChanged を通じて ThemeChanged を購読します(ScheduleControl から直接は購読できません)
タッチと操作

📄 読む: references/touch-and-interaction.md

  • タッチに対応する EnableTouchMode プロパティ
  • タッチスワイプ(垂直スクロールと水平ナビゲーション)
  • タッチズームによるビューの変更
  • 予定のドラッグとサイズ変更
  • ItemChanging イベントと ItemDragHitContext
  • ItemChanging イベントハンドラーで予定の詳細を取得するには e.ProposedItem を使用します
  • ドラッグのコンテキスト(Schedule 領域か Calendar 領域か)の検出
  • ドロップ先に応じたドラッグ操作のキャンセル
  • ItemAction 列挙型

クイックスタート例

using System;
using System.Windows.Forms;
using Syncfusion.Schedule;
using Syncfusion.Windows.Forms.Schedule;

namespace SchedulerApp
{
    public partial class Form1 : Form
    {
        private ScheduleControl scheduleControl1;
        
        public Form1()
        {
            InitializeComponent();
            InitializeScheduler();
        }
        
        private void InitializeScheduler()
        {
            // Create ScheduleControl
            scheduleControl1 = new ScheduleControl();
            scheduleControl1.Location = new Point(20, 20);
            scheduleControl1.Size = new Size(800, 600);
            
            // Set up built-in data provider
            ArrayListDataProvider data = new ArrayListDataProvider();
            data.MasterList = new ArrayListAppointmentList();
            
            // Configure view and data binding
            scheduleControl1.ScheduleType = ScheduleViewType.Month;
            scheduleControl1.DataSource = data;
            
            // Add to form
            this.Controls.Add(scheduleControl1);
        }
    }
}

よく使われるパターン

予定の作成と追加
// Get the data provider
ArrayListDataProvider dataProvider = scheduleControl1.DataSource as ArrayListDataProvider;

// Create new appointment
IScheduleAppointment appointment = dataProvider.NewScheduleAppointment();
appointment.StartTime = DateTime.Now.AddHours(1);
appointment.EndTime = DateTime.Now.AddHours(2);
appointment.Subject = "Team Meeting";
appointment.Content = "Discuss project milestones";
appointment.LabelValue = 2; // Business category
appointment.ForeColor = Color.Blue;

// Add to data provider
dataProvider.AddItem(appointment);

// Refresh to display
scheduleControl1.Refresh();

// Save to XML file
dataProvider.SaveXML(dataProvider.FileName);
繰り返し予定の作成
IScheduleDataProvider dataProvider = scheduleControl1.DataSource as IScheduleDataProvider;
IScheduleAppointment app = dataProvider.NewScheduleAppointment();
IRecurringScheduleDataProvider recurringProvider = scheduleControl1.DataSource as IRecurringScheduleDataProvider;

IRecurringScheduleAppointment recurringItem = app as IRecurringScheduleAppointment;

if (recurringItem != null)
{
    recurringItem.StartTime = new DateTime(2026, 03, 24, 9, 0, 0);
    recurringItem.EndTime = new DateTime(2026, 03, 24, 10, 0, 0);
    recurringItem.Subject = "Daily Standup";
    
    // Recurrence rule: Every weekday
    recurringItem.RecurrenceRule = "03/24/2026;06/30/2026;Every WEEKDAY";
    
    // Add recurring appointments
    recurringProvider.AddNewRecurringAppointments(recurringItem, new DateTime(2026, 12, 31));
}
プログラムによるビューの変更
// Switch to Day view
scheduleControl1.ScheduleType = ScheduleViewType.Day;

// Switch to Week view
scheduleControl1.ScheduleType = ScheduleViewType.Week;

// Switch to WorkWeek view (Monday-Friday)
scheduleControl1.ScheduleType = ScheduleViewType.WorkWeek;

// Switch to Month view
scheduleControl1.ScheduleType = ScheduleViewType.Month;
外観のカスタマイズ
// Access appearance object
ScheduleAppearance appearance = scheduleControl1.Appearance;

// Customize colors
appearance.CaptionBackColor = Color.FromArgb(0, 114, 198);
appearance.PrimeTimeCellColor = Color.LightBlue;
appearance.NonPrimeTimeCellColor = Color.White;

// Set prime time hours (9 AM to 5 PM)
appearance.PrimeTimeStart = 9;
appearance.PrimeTimeEnd = 17;

// Apply Metro theme
appearance.VisualStyle = Syncfusion.Windows.Forms.GridVisualStyles.Metro;

// Customize navigation calendar
appearance.NavigationCalendarBackColor = Color.White;
appearance.NavigationCalendarSelectionColor = Color.Blue;
appearance.NavigationCalendarTodayColor = Color.Red;
タッチサポートの有効化
// Enable touch mode for swipe, zoom, and pan gestures
scheduleControl1.EnableTouchMode = true;

// Users can now:
// - Swipe vertically to scroll in Day/WorkWeek views
// - Swipe horizontally to navigate previous/next
// - Zoom to change view types (like Outlook)
予定のドラッグイベントの処理
// Subscribe to ItemChanging event
scheduleControl1.ItemChanging += ScheduleControl1_ItemChanging;

private void ScheduleControl1_ItemChanging(object sender, ScheduleAppointmentCancelEventArgs e)
{
    if (e.Action == ItemAction.ItemDrag)
    {
        // Get drag context (Calendar or Schedule area)
        Console.WriteLine($"Dropped in: {e.ItemDragHitContext}");
        
        // Cancel drops to calendar area
        if (e.ItemDragHitContext == ItemDragHitContext.Calendar)
        {
            MessageBox.Show("Cannot drop appointments in calendar area");
            e.Cancel = true;
        }
    }
}

主要なクラスとインターフェイス

ScheduleControl

スケジュール機能を提供するメインコントロール:

  • DataSource:IScheduleDataProvider - 予定のデータソース
  • ScheduleType:ScheduleViewType - 現在のビュー(月/日/週/稼働日/カスタム週)
  • Appearance:ScheduleAppearance - 外観をカスタマイズするオブジェクト
  • Calendar:NavigationCalendar - ナビゲーションカレンダーコントロール
  • EnableAlerts:bool - 予定のリマインダーを有効化
  • EnableTouchMode:bool - タッチジェスチャーを有効化
ScheduleAppointment (IScheduleAppointment)

個々の予定を表します。

  • StartTime、EndTime:DateTime - 予定の時間範囲
  • Subject:string - 予定のタイトル
  • Content:string - 詳細な説明
  • AllDay:bool - 終日予定のフラグ
  • LabelValue:int - カテゴリ/ラベルの識別子
  • MarkerValue:int - ステータスマーカー(空き、予定あり、仮予定、外出中)
  • ReminderValue:int - リマインダーの時間間隔
  • LocationValue:int - 場所の識別子
  • ForeColor:Color - テキストの色
  • UniqueID:int - 一意の識別子
  • Owner:int - 複数ユーザーのシナリオにおける所有者の識別子
ScheduleDataProvider (IScheduleDataProvider)

データ管理の基本クラス:

  • GetScheduleForDay(DateTime day):指定した日の予定を取得します
  • GetSchedule(DateTime start, DateTime end):日付範囲内の予定を取得します
  • NewScheduleAppointment():新しい予定オブジェクトを作成します
  • AddItem(IScheduleAppointment):予定を追加します
  • RemoveItem(IScheduleAppointment):予定を削除します
  • CommitChanges():変更を保存します
  • SaveOnCloseBehaviorAction:コントロールの破棄時に自動保存する動作

一般的なユースケース

  1. Outlook 風のカレンダーアプリケーション

    • ナビゲーション用カレンダーを備えた月表示
    • ダブルクリックによる予定の作成
    • ドラッグ&ドロップによる予定の再設定
    • 定期的な会議のサポート
  2. リソーススケジュール管理システム

    • リソース割り当て用の日/週表示
    • リソースの種類別に色分けされた予定
    • ドラッグによる割り当て機能
    • カスタム間隔による時間枠の管理
  3. イベント管理アプリケーション

    • 月表示で複数日にわたるイベントを表示
    • 終日イベントのサポート
    • ラベルによるイベントの分類
    • 場所とリマインダーのカスタム設定
  4. 医療機関向け予約システム

    • 医師のスケジュール用ワークウィーク表示
    • 15 分間隔の時間枠
    • 患者の予約管理
    • 定期的な予約パターン(毎週の診察)
  5. 時間の追跡と記録

    • AllowSecondsInAppointment による分/秒単位の精度
    • データベース連携用のカスタムデータプロバイダー
    • 時間ベースの繰り返し(N 分/時間ごと)
    • 時間列の詳細なカスタマイズ
  6. タッチ対応タブレットのスケジュール管理

    • タブレット端末向けに EnableTouchMode を有効化
    • スワイプによる日付間の移動
    • ズームジェスチャーによる表示の変更
    • タッチ操作に適した予定の編集

関連するスキル

次のステップ

まず はじめに を確認して Scheduler コントロールをインストール、設定し、次に上記のナビゲーションガイドからアプリケーションの要件に応じた機能を確認してください。

コメント