[WPF][MenuItem] メニューがクリックされたことを検知する

スポンサーリンク

MenuItemコントロールのOnClickイベントを使用して、メニューがクリックされたことを検知する

概要

この記事では、WPFのMenuItemコントロールにおいて、Clickイベントを使用して、メニューがクリックされたことを検知する方法について説明します。Clickイベントは、MenuItemがクリックされたときに発生するルーティングイベントです。このイベントをハンドラーで処理することで、メニューのクリックに応じた処理を実行することができます。

構文

Clickイベントの構文は以下のとおりです。

XAML

<MenuItem Header="メニュー名" Click="イベントハンドラー名" />

コードビハインド

private void イベントハンドラー名(object sender, RoutedEventArgs e)
{
    // クリックされたメニューに応じた処理
}

ここで、Header属性はメニューの表示名を指定します。OnClick属性は、メニューがクリックされたときに呼び出されるイベントハンドラーの名前を指定します。senderパラメーターは、クリックされたMenuItemオブジェクトを表します。eパラメーターは、ルーティングイベントのデータを格納するRoutedEventArgsオブジェクトを表します。

 

使用例

以下は、Clickイベントの使用例です。この例では、ファイルメニューの中に新規作成、開く、保存、終了の4つのサブメニューを作成し、それぞれにClickイベントを設定しています。また、イベントハンドラーでは、クリックされたサブメニューの名前をテキストブロックに表示する処理を行っています。

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="800">
            <MenuItem Header="_ファイル">
                <MenuItem Header="_新規作成" Olick="New_Click" />
                <MenuItem Header="_開く" Click="Open_Click" />
                <MenuItem Header="_保存" Click="Save_Click" />
                <Separator />
                <MenuItem Header="_終了" Click="Exit_Click" />
            </MenuItem>
        </Menu>
        <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="10,50,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="30"/>
    </Grid>
</Window>
using System.Windows;

namespace WpfApp1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void New_Click(object sender, RoutedEventArgs e)
        {
            textBlock.Text = "新規作成がクリックされました。";
        }

        private void Open_Click(object sender, RoutedEventArgs e)
        {
            textBlock.Text = "開くがクリックされました。";
        }

        private void Save_Click(object sender, RoutedEventArgs e)
        {
            textBlock.Text = "保存がクリックされました。";
        }

        private void Exit_Click(object sender, RoutedEventArgs e)
             this.Close(); 
        }
    }
}
実行例

実行例

Please follow and like us:

コメント

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