public static FileSaveResult Show(FileSaveParameter parameter) { //メッセージボックスの結果 var saveResult = new FileSaveResult(); //イベントを発行する Instance.ShowMessageBox?.Invoke( Instance, new DialogMessenger.EventArgs() { SaveParameter = parameter, //コールバックで結果を受け取る NotifySaveResult = result => { saveResult = result; } }); return(saveResult); }
/// <summary> /// ファイル保存ダイアログ表示 /// </summary> /// <param name="parameter"></param> /// <returns></returns> protected override FileSaveResult Show(FileSaveParameter parameter) { var dialog = new SaveFileDialog(); dialog.Title = parameter.Title; dialog.Filter = parameter.Filter; dialog.FileName = parameter.FileName; dialog.InitialDirectory = parameter.InitialDirectory; var result = new FileSaveResult(); if (dialog.ShowDialog() == true) { result.Result = true; result.FilePath = dialog.FileName; } else { result.Result = false; } return(result); }
/// <summary> /// アクションの実態 /// </summary> /// <param name="parameter"></param> protected override void Invoke(object parameter) { //イベント引数の種別を検査 var messageBoxArgs = parameter as DialogMessenger.EventArgs; if (messageBoxArgs == null) { return; } //メッセージボックスの表示結果を取得 if (messageBoxArgs.Parameter != null) { DialogResult result = Show(messageBoxArgs.Parameter); //コールバックで結果を通知 messageBoxArgs.NotifyResult?.Invoke(result); } else if (messageBoxArgs.SaveParameter != null) { FileSaveResult saveResult = Show(messageBoxArgs.SaveParameter); //コールバックで結果を通知 messageBoxArgs.NotifySaveResult?.Invoke(saveResult); } else if (messageBoxArgs.OpenParameter != null) { FileOpenResult openResult = Show(messageBoxArgs.OpenParameter); //コールバックで結果を通知 messageBoxArgs.NotifyOpenResult?.Invoke(openResult); } else if (messageBoxArgs.HimmeiSearchParameter != null) { HimmeiSearchResult openResult = Show(messageBoxArgs.HimmeiSearchParameter); //コールバックで結果を通知 messageBoxArgs.NotifyHimmeiSearchResult?.Invoke(openResult); } }