public static HimmeiSearchResult Show(HimmeiSearchParameter parameter) { //メッセージボックスの結果 var openResult = new HimmeiSearchResult(); //イベントを発行する Instance.ShowMessageBox?.Invoke( Instance, new DialogMessenger.EventArgs() { HimmeiSearchParameter = parameter, //コールバックで結果を受け取る NotifyHimmeiSearchResult = result => { openResult = result; } }); return(openResult); }
/// <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); } }