LoginSignup
1
1

More than 5 years have passed since last update.

Visual Studio / WPF > コントロール > Menu > 例 / "_"でAltキーと使用するキーを設定 > アクセスキー

Last updated at Posted at 2017-04-25
動作環境
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

@ WPF 4.5入門 by 大田一希さん
No.4082 / 9985

Menuを使った例が紹介されている。

試してみた

クリックイベントも含めて試してみた。

XAML
<Window x:Class="_170425_t1800_menu.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:_170425_t1800_menu"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Menu>
            <MenuItem Header="Menu1"/>
            <MenuItem Header="Menu2">
                <MenuItem Header="Open">
                    <MenuItem Header="C:\Windows\Microsoft.Net\assembly\GAC_MSIL\UIAutomationProvider\v4.0_4.0.0.0__31bf3856ad364e35\UIAutomationProvider.dll"
                              Click="Open_dll"></MenuItem>
                </MenuItem>
            </MenuItem>
            <MenuItem Header="Menu3"/>
        </Menu>
    </Grid>
</Window>
MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace _170425_t1800_menu
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Open_dll(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("File not found");
        }
    }
}

work.png

work.png

Menuという安易な名前。
検索するとMenuItemなど他のコントロールも出てきてしまう。
WPFでしっかり設計したときにこういう部分も考慮されれば良かったと思う。

Altキーとの組み合わせ ("_")

@ WPF 4.5入門 by 大田一希さん
No.4075 / 9985

Headerプロパティに"_F"などのように記述すると、Altを押した後のキーボードショートカットを指定することができます。

試してみた。

XAML
<Window x:Class="_170425_t1800_menu.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:_170425_t1800_menu"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Menu>
            <MenuItem Header="_Menu1"/>
            <MenuItem Header="M_enu2">
                <MenuItem Header="Open">
                    <MenuItem Header="C:\Windows\Microsoft.Net\assembly\GAC_MSIL\UIAutomationProvider\v4.0_4.0.0.0__31bf3856ad364e35\UIAutomationProvider.dll"
                              Click="Open_dll"></MenuItem>
                </MenuItem>
            </MenuItem>
            <MenuItem Header="Me_nu3"/>
        </Menu>
    </Grid>
</Window>

Altを押した状態。

work.png

Buttonのアクセスキーとはまた別の記述の仕方だ。

http://dobon.net/vb/dotnet/control/menustrip.html#section5
によると「アクセスキー」と呼ぶようだ。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1