[Windows ストア アプリ] メッセージダイアログを表示する(2)

スポンサーリンク

前回に引き続き、今回もメッセージダイアログの使用方法について紹介します。

今回は、メッセージダイアログに複数のボタンを表示する方法について見ていきます。

ソースコードは前回紹介したものに追記していきます。


MessageDialogに表示するボタンを作成するには UICommandクラスを使用します。

UICommandクラスもMessageDialogクラスと同様にWindows.UI.Popups名前空間にあります。

UICommandクラスのインスタンスは、下記のようにして作成します。

ここではOKとCancelの2つのボタンを追加します。

UICommandのコンストラクタの第1引数にはボタンに表示するメッセージを、第2引数にはボタンがクリックされたときに実行するイベントハンドラを登録します。

また、作成したUICommandは、MessageDialogのCommandsプロパティが持つAddメソッドで追加します。

ボタンは最大で3つまで登録することができます。

VB

Private Async Sub btnMessage_Click(sender As Object, e As RoutedEventArgs) Handles btnMessage.Click
Dim md As New MessageDialog("Hello, Windows Store Application!!", "First MessageDialog App")

Dim uicOK As New UICommand("OK", New UICommandInvokedHandler(AddressOf CommandInvokedHandler))
Dim uicCancel As New UICommand("Cancel", New UICommandInvokedHandler(AddressOf CommandInvokedHandler))

md.Commands.Add(uicOK)
md.Commands.Add(uicCancel)

Await md.ShowAsync()
End Sub

C#

private async void btnMessage_Click(object sender, RoutedEventArgs e)
{
    MessageDialog md = new MessageDialog("Hello, Windows Store Application!!","First MessageDialog App");

    UICommand uicOK = new UICommand("OK", new UICommandInvokedHandler(this.CommandInvokedHandler));
    UICommand uicCancel = new UICommand("Cancel", new UICommandInvokedHandler(this.CommandInvokedHandler));

    md.Commands.Add(uicOK);
    md.Commands.Add(uicCancel);

    var x = await md.ShowAsync();
}

さて、上記でMessageDialogに2つのボタンを追加することができました。

今度はボタンが押されたことをイベントで拾えるようにします。

先ほど、UICommandで登録したイベントハンドラは下記のように記述します。

ボタンがクリックされると、登録したイベントハンドラ(CommandInvokedHandler)が起動し、引数 IUICommand には押されたボタンの情報が入ってきます。

Select Caseを使用し(C#はswitch)、IUICommand の Labelプロパティを参照して押されたボタンを判断します。

VB

Private Sub CommandInvokedHandler(command As Windows.UI.Popups.IUICommand)
    Dim a As Integer
    Select Case command.Label
        Case "OK"
            '[OK]が押された処理をここに記述
        Case "Cancel"
            '[Cancel]が押された処理をここに記述
    End Select
End Sub

C#

private void CommandInvokedHandler(IUICommand command)
{
    switch (command.Label)
    {
        case "OK":
            // [OK]が押された処理をここに記述
            break;
        case "Cancel":
            // [Cancel]が押された処理をここに記述
            break;
    }
}

ここまでの入力が完了したら、[F5]を押して実行します。

下記のように[OK][Cancel]がMessageDialogに表示されます。

Please follow and like us:

コメント

タイトルとURLをコピーしました