イベントをキャンセルする

イベントをキャンセルする

アクションが実行される前に開始するイベント(DocumentSaving など)の大半をキャンセルできます(イベントがキャンセル可能かどうかを判断するには Cancellable プロパティを使用します)。たとえば、保存する前に、モデルが特定の基準を満たしてことを確認する必要がある場合があります。たとえば、DocumentSaving や DocumentSavingAs イベントに登録することで、ドキュメントの特定の基準を確認して[保存]や[名前を付けて保存]といったアクションをキャンセルできます。一度キャンセルすると、イベントのキャンセルを取り消すことはできません。

注: プレイベントをキャンセルすると、イベントに登録されているその他のイベント ハンドラには通知されません。ただし、プレイベントに関連するポストイベントに登録してあるハンドラには通知されます。

DocumentSavingAs イベントの次のイベント ハンドラは、ProjectInformation Status パラメータが空かどうかを確認し、空の場合は SaveAs イベントをキャンセルします。アプリケーションがイベントをキャンセルした場合は、アプリケーションからユーザへの説明が必要になるので注意してください。

コード領域 24-2: イベントをキャンセル

private void CheckProjectStatusInitial(Object sender, DocumentSavingAsEventArgs args)
{
        Document doc = args.Document;
        ProjectInfo proInfo = doc.ProjectInformation;
        
        // Project information is only available for project document.
        if (null != proInfo)
        {
                if (string.IsNullOrEmpty(proInfo.Status))
                {
        
                        // cancel the save as process.
                        args.Cancel = true;
                        MessageBox.Show("Status project parameter is not set.  Save is aborted.");
                }
        }
}
注: ほとんどのイベント引数が Cancel プロパティと Cancellable プロパティを持ちますが、DocumentChanged イベントと FailuresProcessing イベントは対応する Cancel()メソッドと IsCancellable()メソッドを持ちます。