포럼: Open Discussion (Thread #36050)

BizLogicException で スローし、View で表示するダイアログについて (2014-10-09 17:46 by kawada #74563)

テラソルナの BizLogicException について お聞きしたいことがあります。

.Netでテラソルナの機能を使用します。
画面から、ビジネスロジックへ処理を飛ばして、ビジネスロジックでエラーの場合に、BizLogicException にてスローします。

画面上で、メッセージボックスが表示されますが、アイコンが赤い「×」マークになります。
どうにか、そのアイコンを「ビックリ」マークなどに変更できないでしょうか。
タイトルも変更できるとありがたいです。

お忙しい中、すみませんが
ご教授よろしくお願いいたします。

Reply to #74563×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

Re: BizLogicException で スローし、View で表示するダイアログについて (2014-10-10 17:08 by tajirim #74568)

[メッセージ #74563 への返信]
ビジネスロジックエラー(BizLogicException)の際にメッセージダイアログに表示される
アイコン、タイトルの変更は、フレームワークの拡張により可能となります。

以下、一つずつご説明いたします。

① アイコンの変更

機能説明書「CL-05 クライアントエラーハンドリング機能」のページCL-05_02にありますように、
ビジネスロジックエラー時に表示するダイアログは、「メッセージ通知機能」を利用して表示しております。

機能説明書「CL-06 メッセージ通知機能」のページCL-06_09にありますように、
メッセージ通知機能では、.NETフレームワーク標準のMessageBoxクラスを利用して
ダイアログを表示しており、デフォルトから表示するボタン等を変更することができる
拡張ポイントが用意されております。

機能説明書「CL-06 メッセージ通知機能」のページCL-06_09の拡張例を参考に
MessageBoxNotificationDisplayerクラスを拡張し、
MessageBoxIconの種類を変更することで、表示するアイコンを変更してください。

以下のようなコードになります。

/// <summary>
/// デフォルトのメッセージ通知機能拡張クラス
/// </summary>
public class CustomMessageBoxNotificationDisplayer :
MessageBoxNotificationDisplayer
{
/// <summary>
/// エラーメッセージ表示
/// </summary>
/// <param name="owner"></param>
/// <param name="message"></param>
/// <param name="caption"></param>
public override void
ShowErrorMessage(System.Windows.Forms.IWin32Window owner,
string message, string caption)
{
// MessageBoxIconをエクスクラメーションに変更
MessageBox.Show(owner, message, caption,
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button1,
GetMessageBoxOptions(owner));
}
}

また、スタートアッププロジェクトのTerasolunaFramework.config
IMessageNotificationDisplayerの定義を修正・非コメント化し、拡張クラスを適用してください。

以下のような定義になります。

<unity>
<typeAliases>
<!--★★★メッセージ通知機能拡張クラスの定義-->
<typeAlias alias="CustomMessageBoxNotificationDisplayer"
type="TerasolunaEx.Windows.Forms.MessageNotification.CustomMessageBoxNotificationDisplayer,
TerasolunaEx"/>
</typeAliases>
<containers>
<container>
<types>
<!-- ★★★拡張メッセージ通知機能の設定 -->
<type type="IMessageNotificationDisplayer"
mapTo="CustomMessageBoxNotificationDisplayer"/>
</types>
</container>
</containers>
</unity>


なお、MessageBoxIconの種類については、以下をご参照ください。
<<http://msdn.microsoft.com/ja-
jp/library/system.windows.forms.messageboxicon%28v=vs.90%29.aspx>>

② タイトルの変更

ビジネスロジックエラーメッセージのタイトル「業務エラー」は、
フレームワークが管理するデフォルトメッセージとして、
Terasoluna.Windows.Forms.dllのDisplayResources.resxにて定義されております。

機能説明書「CM-07 メッセージ管理機能」のページCM-07_05にありますように、
フレームワークが管理するデフォルトメッセージを各プロジェクトで定義した
カスタムメッセージリソースで上書きする拡張ポイントが用意されております。

機能説明書「CM-07 メッセージ管理機能」のページCM-07_05の拡張例を参考に
Terasoluna.Windows.Forms.dllのDisplayResources.resxに対応する
カスタムメッセージリソースを作成し、スタートアッププロジェクトのMainメソッドにて
リソースの上書きを行なってください。

以下のようなコードになります。

/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
AppDomain.CurrentDomain.UnhandledException
+= new
UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException
+= new
System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

// [変更点]
//
Terasoluna.Windows.Forms.dllのDisplayResources.resxをカスタムメッセージリソースに差し替える
Terasoluna.Windows.Forms.Properties.
DisplayMessageResources.Manager.CustomResourceType = typeof(CustomDisplayResources);

///TerasolunaStartupForm継承クラスによるフレームワークの起動処理
///TerasolunaBootstrap.configに設定した初期表示画面を起動する
Application.Run(new StartupForm());

}
Reply to #74563

Reply to #74568×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

Re: BizLogicException で スローし、View で表示するダイアログについて (2014-10-14 20:53 by kawada #74605)

[メッセージ #74568 への返信]
> [メッセージ #74563 への返信]
> ビジネスロジックエラー(BizLogicException)の際にメッセージダイアログに表示される
> アイコン、タイトルの変更は、フレームワークの拡張により可能となります。
>
> 以下、一つずつご説明いたします。
>
> ① アイコンの変更
>
> 機能説明書「CL-05 クライアントエラーハンドリング機能」のページCL-05_02にありますように、
> ビジネスロジックエラー時に表示するダイアログは、「メッセージ通知機能」を利用して表示しております。
>
> 機能説明書「CL-06 メッセージ通知機能」のページCL-06_09にありますように、
> メッセージ通知機能では、.NETフレームワーク標準のMessageBoxクラスを利用して
> ダイアログを表示しており、デフォルトから表示するボタン等を変更することができる
> 拡張ポイントが用意されております。
>
> 機能説明書「CL-06 メッセージ通知機能」のページCL-06_09の拡張例を参考に
> MessageBoxNotificationDisplayerクラスを拡張し、
> MessageBoxIconの種類を変更することで、表示するアイコンを変更してください。
>
> 以下のようなコードになります。
>
> /// <summary>
> /// デフォルトのメッセージ通知機能拡張クラス
> /// </summary>
> public class CustomMessageBoxNotificationDisplayer :
> MessageBoxNotificationDisplayer
> {
> /// <summary>
> /// エラーメッセージ表示
> /// </summary>
> /// <param name="owner"></param>
> /// <param name="message"></param>
> /// <param name="caption"></param>
> public override void
> ShowErrorMessage(System.Windows.Forms.IWin32Window owner,
> string message, string caption)
> {
> // MessageBoxIconをエクスクラメーションに変更
> MessageBox.Show(owner, message, caption,
> MessageBoxButtons.OK,
> MessageBoxIcon.Exclamation,
> MessageBoxDefaultButton.Button1,
> GetMessageBoxOptions(owner));
> }
> }
>
> また、スタートアッププロジェクトのTerasolunaFramework.config
> IMessageNotificationDisplayerの定義を修正・非コメント化し、拡張クラスを適用してください。
>
> 以下のような定義になります。
>
> <unity>
> <typeAliases>
> <!--★★★メッセージ通知機能拡張クラスの定義-->
> <typeAlias alias="CustomMessageBoxNotificationDisplayer"
> type="TerasolunaEx.Windows.Forms.MessageNotification.CustomMessageBoxNotificationDisplayer,
> TerasolunaEx"/>
> </typeAliases>
> <containers>
> <container>
> <types>
> <!-- ★★★拡張メッセージ通知機能の設定 -->
> <type type="IMessageNotificationDisplayer"
> mapTo="CustomMessageBoxNotificationDisplayer"/>
> </types>
> </container>
> </containers>
> </unity>
>
>
> なお、MessageBoxIconの種類については、以下をご参照ください。
> <<http://msdn.microsoft.com/ja-
> jp/library/system.windows.forms.messageboxicon%28v=vs.90%29.aspx>>
>
> ② タイトルの変更
>
> ビジネスロジックエラーメッセージのタイトル「業務エラー」は、
> フレームワークが管理するデフォルトメッセージとして、
> Terasoluna.Windows.Forms.dllのDisplayResources.resxにて定義されております。
>
> 機能説明書「CM-07 メッセージ管理機能」のページCM-07_05にありますように、
> フレームワークが管理するデフォルトメッセージを各プロジェクトで定義した
> カスタムメッセージリソースで上書きする拡張ポイントが用意されております。
>
> 機能説明書「CM-07 メッセージ管理機能」のページCM-07_05の拡張例を参考に
> Terasoluna.Windows.Forms.dllのDisplayResources.resxに対応する
> カスタムメッセージリソースを作成し、スタートアッププロジェクトのMainメソッドにて
> リソースの上書きを行なってください。
>
> 以下のようなコードになります。
>
> /// <summary>
> /// アプリケーションのメイン エントリ ポイントです。
> /// </summary>
> [STAThread]
> static void Main()
> {
> AppDomain.CurrentDomain.UnhandledException
> += new
> UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
> Application.ThreadException
> += new
> System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
> Application.EnableVisualStyles();
> Application.SetCompatibleTextRenderingDefault(false);
>
> // [変更点]
> //
> Terasoluna.Windows.Forms.dllのDisplayResources.resxをカスタムメッセージリソースに差し替える
> Terasoluna.Windows.Forms.Properties.
> DisplayMessageResources.Manager.CustomResourceType = typeof(CustomDisplayResources);
>
> ///TerasolunaStartupForm継承クラスによるフレームワークの起動処理
> ///TerasolunaBootstrap.configに設定した初期表示画面を起動する
> Application.Run(new StartupForm());
>
> }

大変詳しいご説明ありがとうございます。
返信が遅くなり、大変申し訳ありません。

今後とも、よろしくお願い致します。
Reply to #74568

Reply to #74605×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login