libro
www.tuyano.com
C#ではじめるWindows 8アプリ開発入門

メッセージダイアログとポップアップメニュー (5/5)

作成:2014-02-01 11:51
更新:2014-02-01 11:51

■ポップアップメニューを表示する

メッセージダイアログのボタンは、便利ですが、最大3個までしか表示できません。もっとたくさんの項目を表示して何かを実行させたい、というときは、メッセージダイアログよりも「ポップアップメニュー」を利用するのがよいでしょう。

ポップアップメニューは「PopupMenu」というクラスとして用意されています。これは以下のようにインスタンスを作成します。
PopupMenu 変数= new PopupMenu();
作成したら、UICommandCommandsAddメソッドで組み込んでいきます。そして、ShowAsyncで表示をします。この辺りの使い方はMessageDialogと同じですが、しかしShowAsyncの引数がちょっと違うので注意が必要です。
《PopupMenu》.ShowAsync(《Point》);
引数の「Point」は、位置を示すクラスです。これを利用して、ポップアップメニューを表示する位置を指定するのですね。このPointは、縦横の位置をdoubleで指定してインスタンスを作成します。
Point 変数 = new Point( 横位置 , 縦位置 );
では、下に利用例を挙げておきましょう。ボタンを押すと、画面の左上にポップアップメニューが現れます。ここからメニューを選ぶと、それに応じたメッセージがTextBlockに表示されます。UICommandを使いますので、基本的な処理の仕方はMessageDialogと同じですからすぐにわかることでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Threading.Tasks;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// 空白ページのアイテム テンプレートについては、http://go.microsoft.com/fwlink/?LinkId=234238 を参照してください

namespace MyWin8App
{
    /// <summary>
    /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        private async void button1_click(object sender, RoutedEventArgs e)
        {
            string msg = "Hello, " + textbox1.Text + "!";
            PopupMenu menu = new PopupMenu();
            for(int i = 1;i <= 3;i++)
            {
                menu.Commands.Add(new UICommand("No," + i));
            }
            IUICommand cmd = await menu.ShowAsync(new Point(100,100));
            textblock1.Text = cmd.Label + "を選んだね。";
        }

    }
}

※関連コンテンツ

「C#ではじめるWindows 8アプリ開発入門」に戻る