syncfusion-winforms-scheduler について
Windows Forms 開発者向けに、Syncfusion Scheduler のカレンダー画面の実装方法を解説するスキルです。予定管理、繰り返し、ナビゲーション、タッチ操作、外観のカスタマイズを扱います。
主な機能
- 01月・日・週・カスタム週表示
- 02予定の CRUD とデータバインド
- 03繰り返し予定のルール
- 04ドラッグ&ドロップとタッチ操作
- 05外観とテーマのカスタマイズ
活用シーン
- 01Outlook 風カレンダーの開発
- 02リソース予約システムの構築
- 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.mdcustomizing-appearance.mddata-provider-xml-implementation.mdgetting-started.mdrecurrence-appointments.mdtouch-and-interaction.mdviews-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.dllSyncfusion.Grid.Windows.dllSyncfusion.Schedule.Base.dllSyncfusion.Schedule.Windows.dllSyncfusion.Shared.Base.dllSyncfusion.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:コントロールの破棄時に自動保存する動作
一般的なユースケース
-
Outlook 風のカレンダーアプリケーション
- ナビゲーション用カレンダーを備えた月表示
- ダブルクリックによる予定の作成
- ドラッグ&ドロップによる予定の再設定
- 定期的な会議のサポート
-
リソーススケジュール管理システム
- リソース割り当て用の日/週表示
- リソースの種類別に色分けされた予定
- ドラッグによる割り当て機能
- カスタム間隔による時間枠の管理
-
イベント管理アプリケーション
- 月表示で複数日にわたるイベントを表示
- 終日イベントのサポート
- ラベルによるイベントの分類
- 場所とリマインダーのカスタム設定
-
医療機関向け予約システム
- 医師のスケジュール用ワークウィーク表示
- 15 分間隔の時間枠
- 患者の予約管理
- 定期的な予約パターン(毎週の診察)
-
時間の追跡と記録
- AllowSecondsInAppointment による分/秒単位の精度
- データベース連携用のカスタムデータプロバイダー
- 時間ベースの繰り返し(N 分/時間ごと)
- 時間列の詳細なカスタマイズ
-
タッチ対応タブレットのスケジュール管理
- タブレット端末向けに EnableTouchMode を有効化
- スワイプによる日付間の移動
- ズームジェスチャーによる表示の変更
- タッチ操作に適した予定の編集
関連するスキル
- データグリッドの実装 - 予定リストの表示用
- 日付ピッカーの実装 - 日付選択 UI コンポーネント用
- カレンダーの実装 - 単体で使用するカレンダーコンポーネント用
次のステップ
まず はじめに を確認して Scheduler コントロールをインストール、設定し、次に上記のナビゲーションガイドからアプリケーションの要件に応じた機能を確認してください。