[UWP][カレンダー] 予定を削除する

前回はカレンダーに予約を登録する方法について確認しました。

今回は、カレンダーの予定を削除する方法を見ていきましょう。

前回、予定を追加するとユニークなIDが返されることを説明しました。

カレンダーから予定を削除するには、AppointManagerクラスのShowRemoveAppointmentAsyncメソッドに対してこのIDを渡す必要があります。

ShowRemoveAppointmentAsyncメソッドは、指定されたIDの予定を表示し削除するかどうかを聞いてきます。

あとは、ユーザーが削除するかどうかを決定します。

以下に、コード例を示します。

private async void btnDel_Click(object sender, RoutedEventArgs e)
{
    // IDがない場合は処理終了
    if (string.IsNullOrEmpty(this._id)) return;

    // 予定を追加してIDを取得する
    if (await Windows.ApplicationModel.Appointments.AppointmentManager.ShowRemoveAppointmentAsync(this._id, Rect.Empty))
    {
        var dialog = new Windows.UI.Popups.MessageDialog("削除しました");
        await dialog.ShowAsync();
    }
}

以下に実行例を示します。

表示されたダイアログで[削除]ボタンを押すと予定が削除されます。

予定を削除する

[UWP][カレンダー] 予定を追加する(2)

前回は、説明を簡単にするため、基本的な予定の追加方法について説明をしました。

今回は、もう少し情報を追加してみましょう。

まずはじめに、予定の終了時間を設定してみましょう(前回は開始日時のみ設定しています)。

AppointmentクラスにはStartTimeプロパティがあるので、開始日時が追加できることはなんとなくわかります。しかしEndTimeというプロパティはありません。

では、どのように設定するのかと言うと、Durationプロパティを使用します。このプロパティにはTimeSpan構造体の値を設定します。

Durationプロパティを使用する前に、StartTImeプロパティにタイムゾーンを設定しておく必要があります。

以下に、2016/6/20 9:00~10:00に予定を設定するコードを示します。

private async void btnAdd_Click(object sender, RoutedEventArgs e)
{
    var appointment = new Windows.ApplicationModel.Appointments.Appointment();
    // 予定のタイトル
    appointment.Subject = "家の片付け";
    // 予定の詳細
    appointment.Details = "リビングとキッチンの床ふき";
    // 予定の開始日時
    //appointment.StartTime = new DateTimeOffset(new DateTime(2016, 06, 20, 9, 0, 0));

	// タイムゾーンの取得
    var timeZoneOffset = TimeZoneInfo.Local.GetUtcOffset(DateTime.Now);
    var startTime = new DateTimeOffset(2016, 06, 20, 9, 0, 0, 0, timeZoneOffset);
    appointment.StartTime = startTime;
    //予定の終了日時を1時間後に設定する
    appointment.Duration = TimeSpan.FromHours(1);


    // 予定を追加してIDを取得する
    this._id = await Windows.ApplicationModel.Appointments.AppointmentManager.ShowAddAppointmentAsync(appointment, Rect.Empty);
}

また、予定を実行する場所はLoationプロパティで設定します。このプロパティはstring型なので以下のようにして追加することが可能です。

appointment.Location = "自宅";

最後にリマインダー(アラーム)の設定について見てみましょう。リマインダーの設定はReminderプロパティで設定します。 30分で設定する場合は以下のようにします

 

appointment.Reminder = TimeSpan.FromMinutes(30);

[UWP][カレンダー] 予定を追加する

今回から数回に分けて、カレンダーを操作する方法について見ていきます。

まずは、予定を追加する方法を見ていきます。

はじめに、Windows.ApplicationModel.Appointments名前空間にあるAppointmentクラスを使用して予定を作成します。

Subjectプロパティで予定のタイトルを、Detailsプロパティで予定の詳細を設定します。

予定の開始時間はStartTimeで設定します。

予定の設定ができたら、AppointmentManagerクラスのShowAddAppointmentAsyncメソッドで予定の追加を行います。

このメソッドを使用すると、カレンダーアプリが起動し、先ほど設定した内容でカレンダーが表示されます。

この時点では、予定はカレンダーに登録されません。ユーザーがカレンダー上で内容を確認して登録を行う必要があります。登録が行われると、登録した予定のユニークなIDが返されます。

以下にコード例を示します。この例では2016/6/20 9:00に家の片付け(詳細内容は「リビングとキッチンの床ふき」)という予定を登録します。

private string _id;

private async void btnAdd_Click(object sender, RoutedEventArgs e)
{
    var appointment = new Windows.ApplicationModel.Appointments.Appointment();
    // 予定のタイトル
    appointment.Subject = "家の片付け";
    // 予定の詳細
    appointment.Details = "リビングとキッチンの床ふき";
    // 予定の開始日時
    appointment.StartTime = new DateTimeOffset(new DateTime(2016, 06, 20, 9, 0, 0));
    
    // 予定を追加してIDを取得する
    this._id = await Windows.ApplicationModel.Appointments.AppointmentManager.ShowAddAppointmentAsync(appointment, Rect.Empty);
}

カレンダーに予定を追加した例を以下に示します。

予定の追加