iCalendarファイルについて
GcCalendar コントロールは、RFC 2445規格に準じたiCalendarファイル(*.ics)のVEVENTコンポーネントのインポートとエクスポートをサポートしています。iCalendarおよびVEVENTの仕様については、「Internet Calendaring and Scheduling Core Object Specification (iCalendar)」をご参照ください。
GcCalendar コントロールでサポートするVEVENTプロパティの一覧、およびGcCalendar コントロールの祝日設定との関係は次の表のとおりです。
GcCalendar コントロールでサポートするVEVENTプロパティの一覧、およびGcCalendar コントロールの祝日設定との関係は次の表のとおりです。
VEVENT | Holiday | ForceHoliday/ForceWorkday | DayOfWeekHoliday | ForceDayOfWeekHoliday/ForceDayOfWeekWorkday |
---|---|---|---|---|
Summary | Name | Name | Name | Name |
DTStart.Month | StartMonth | × | × | × |
DTStart.Day | StartDay | × | × | × |
DTEnd.Month | EndMonth | × | × | × |
DTEnd.Day | EndDay | × | × | × |
DTStart | × | Start | × | × |
DTEnd | × | End | × | × |
DTStart.Year | × | × | × | Year |
RRule.ByMonth | × | × | Month | Month |
RRule.ByDay | × | × | DayOfWeek | DayOfWeek |
RRule.ByDay | × | × | DayOfWeekInMonth | DayOfWeekInMonth |
|
iCalendarファイルのインポート
設計時に、iCalendarファイルのイベント情報をGcCalendar コントロールの祝日にインポートするには、以下の手順で行います。
上記の手順は、スマートタグの「休日設定を開く...」コマンドからでも同様に実行できます。
実行時にiCalendarファイルから休日をインポートするには、LoadHolidayFromiCalendarメソッドを使用します。次の例は、既存のiCalenderファイルからイベント情報をGcCalendar コントロールの休日に読み込み、表示する方法を示します。サンプルコードを実行するには、ディスクDの下に"Holiday.ics"というiCalendarファイルを配置しておく必要があります。
- GcCalendar コントロールをフォームに配置します。
- GcCalendar コントロールを選択し、プロパティページの[休日設定]のページを表示します。
- 「カレンダーに表示する休日スタイルを選択」グループボックスから[開く]ボタンをクリックします。
- 「ファイルを開く」ダイアログボックスが表示されるので、ファイルの種類を「iCalendar file(*.ics)」に変更して、インポートするicsファイルを選択し[開く]ボタンをクリックします。
- 「iCalendarファイルのインポート」ダイアログが表示されるので、インポートするイベントのチェックボックスにチェックを付けます。「終日の予定のみ」のチェックを外せば、時刻まで指定したイベントを表示することが可能です。
- 「詳細欄」と「休日のタイプ」の内容を確認してから[OK]ボタンをクリックします。
インポートされた休日スタイルをGcCalendar コントロール上で有効にするには、休日スタイルをアクティブに設定する必要があります。アクティブに設定するには、プロパティページ上で、インポートされた休日スタイルのチェックボックスをチェックします。
インポートされた休日の設定を変更する場合は、「休日の追加」タブで行います。
|
実行時にiCalendarファイルから休日をインポートするには、LoadHolidayFromiCalendarメソッドを使用します。次の例は、既存のiCalenderファイルからイベント情報をGcCalendar コントロールの休日に読み込み、表示する方法を示します。サンプルコードを実行するには、ディスクDの下に"Holiday.ics"というiCalendarファイルを配置しておく必要があります。
Imports GrapeCity.Win.Calendar Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' iCalendarファイルのパスを設定します。 Dim path As String = "D:\Holiday.ics" ' iCalendarファイルからすべてのイベントを取得し、GcCalendar1の休日に読み込みます。 Dim holidayStyle As HolidayStyle = Me.GcCalendar1.LoadHolidayFromiCalendar(path) holidayStyle.SubStyle = New SubStyle(Color.YellowGreen, Color.Red, True, False) Me.GcCalendar1.ActiveHolidayStyles = New String() {holidayStyle.Name} If holidayStyle Is Nothing Then MessageBox.Show("No holidays are loaded!") Return End If Dim messageBoxVB As New System.Text.StringBuilder() For Each holiday As IHoliday In holidayStyle.Holidays messageBoxVB.AppendFormat("Name = {0}", holiday.Name) messageBoxVB.AppendLine() Next ' Output the loaded holidays' names. MessageBox.Show(messageBoxVB.ToString(), "All holidays") End Sub
using GrapeCity.Win.Calendar; private void button1_Click(object sender, EventArgs e) { // iCalendarファイルのパスを設定します。 string path = @"D:\Holiday.ics"; // iCalendarファイルからすべてのイベントを取得し、GcCalendar1の休日に読み込みます。 HolidayStyle holidayStyle = this.gcCalendar1.LoadHolidayFromiCalendar(path); holidayStyle.SubStyle = new SubStyle(Color.YellowGreen, Color.Red, true, false); gcCalendar1.ActiveHolidayStyles = new string[] { holidayStyle.Name }; if (holidayStyle == null) { MessageBox.Show("No holidays are loaded!"); return; } System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder(); foreach (IHoliday holiday in holidayStyle.Holidays) { messageBoxCS.AppendFormat("Name = {0}", holiday.Name); messageBoxCS.AppendLine(); } // Output the loaded holidays' names. MessageBox.Show(messageBoxCS.ToString(), "All holidays"); }
iCalendarファイルのエクスポート
GcCalendar コントロールに設定されている休日をiCalendarファイルにエクスポートするには、以下の手順で行います。
- GcCalendar コントロールを選択し、プロパティページの[休日設定]のページを表示します。
- 「カレンダーに表示する休日スタイルを選択」グループボックスから[保存]ボタンをクリックします。
- 「名前を付けて保存」ダイアログボックスが表示されるので、「ファイルの種類」から"iCalendar file(*.ics)"を選択して、保存するファイル名を入力し[保存]ボタンをクリックします。
- 以上の操作で、カレンダーに休日スタイルがエクスポートされます。
GcCalendar1.SaveHolidayToiCalendar("D:\Holidays.ics", "2010年臨時休業日")
gcCalendar1.SaveHolidayToiCalendar("D:\Holidays.ics", "2010年臨時休業日");