MessageBoxコントロールについて
InputMan for ASP.NET 3.0Jには、JavaScriptのalert、confirmおよびpromptメソッドにより表示される各種ダイアログと同様のダイアログを、サーバ側コントロールとして表示できる「メッセージボックス(MessageBox)」コントロールがあります。
このコントロールを使うと、入力エラーをWindowsフォームと同じようにメッセージボックスで表示させることができます。
使用できるメッセージボックスのタイプは次の3種類で、Windowsフォームのようにいくつものタイプのメッセージボックスを表示できるわけではありませんが、押されたボタンに応答してイベント処理を実行させることができます。
使い方は簡単で、WindowsフォームのMessageBoxクラスと同様、Showメソッドを実行します。引数は2つで、メッセージ文字列と表示させるメッセージボックスのタイプをDialogType列挙型のメンバで指定します。
メンバ名 | 説明 |
---|---|
0 - Alert | Javascriptのalertメソッドで表示される警告メッセージボックスを表示します。 |
1 - Confirm | Javascriptのconfirmメソッドで表示される確認メッセージボックスを表示します。 |
2 - Prompt | JavascriptのPromptメソッドで表示される入力メッセージボックスを表示します。 |
メッセージボックスを使った処理
今回は、パスワードを設定するテキストボックスを例にとり、このメッセージボックスを使ってみました。TextBoxはMaxLengthを「8」文字に設定し、8文字以上入力できないようにしていますが、「6文字以上」という最低文字数の制限は設定できないため、6文字未満しか入力されなかった場合にメッセージボックスで警告を表示させます。
処理は、「入力」ボタンのClickイベントハンドラで行い、StringクラスのLengthプロパティを使用してTextBoxの入力データから文字数を取得し、文字数が6未満であればAlertタイプのメッセージボックスを表示します。
そして、6文字以上入力されていれば、確認のメッセージボックスを表示します。これは、「OK」「キャンセル」の2つのボタンを持ったConfirmタイプのメッセージボックスを使います。
Imports GrapeCity.Web.Input.Core Partial Public Class _Default Inherits System.Web.UI.Page Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Dim pass As String = Me.TextBox1.Text If pass.Length < 6 Then MessageBox1.Show("文字数が不足しています。", DialogType.Alert) ElseIf pass.Length >= 6 Then MessageBox1.Show("この内容でよろしいですか?。", DialogType.Confirm) End If End Sub
using GrapeCity.Web.Input.Core; namespace valid_web_cs { public partial class _Default : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e) { string pass = TextBox1.Text; if(pass.Length < 6){ MessageBox1.Show("文字数が不足しています。", DialogType.Alert); } else if (pass.Length >= 6) { MessageBox1.Show("この内容でよろしいですか?。", DialogType.Confirm); } }
MessageBoxコントロールのイベント処理
MessageBoxコントロールがWindowsフォームのMessageBoxクラスと違うのは、メッセージボックスのボタンが押された時の処理です。MessageBoxクラスでは押されたボタンの種類がShowメソッドの戻り値で返されましたが、MessageBoxコントロールではMessageBoxコントロールのResponseイベントハンドラで処理を行うことになります。
Confirmタイプのメッセージボックスでは、「OK」と「キャンセル」のどちらのボタンが押されたのかによって処理を振り分けます。
ユーザーがメッセージボックスの[OKボタン]を押すと、MessageBoxコントロールにはResponseイベントが発生します。そして、[OKボタン]が押されるとこのイベントパラメータのConfirmedプロパティにTrueが設定されます。
そこで、まず[OKボタン]が押されたのかどうかをチェックし、押されたのであれば設定した旨のAlertタイプのメッセージボックスを表示し、TextBoxコントロールを無効にして入力できないようにします。[キャンセルボタン]が押された場合は何もせず、再度パスワードの入力を受けつけます。
Protected Sub MessageBox1_Response(ByVal sender As Object, ByVal e As GrapeCity.Web.Input.IMMessageBox.ResponseEventArgs) Handles MessageBox1.Response If e.DialogType = DialogType.Confirm Then If e.Confirmed Then MessageBox1.Show("パスワードを設定しました", DialogType.Alert) Me.TextBox1.Enabled = False End If End If End Sub
protected void MessageBox1_Response(object sender, GrapeCity.Web.Input.IMMessageBox.ResponseEventArgs e) { if (e.DialogType == DialogType.Confirm) { if (e.Confirmed) { MessageBox1.Show("パスワードを設定しました", DialogType.Alert); TextBox1.Enabled = false; } } }