VB のたまご

作成日: 2017/03/06, 更新日: 2017/03/06



ContextMenu

    イメージ
  •  ContextMenu は、右クリックから表示されるコンテキストメニューを表示するコントロールです。 指定のコントロールに紐づけて、指定のコントロールを右クリックすることでコンテキストメニューが表示されます。 とりあえずどういう風に動くのか見てみましょう。 以下サンプルです。「ContextMenuWindow1」という画面で作成していますが、「MainWindow」に書いても構いません。

  • スポンサーリンク


    <Window x:Class="ContextMenuWindow1"
            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:z04_NormalControls"
            mc:Ignorable="d"
            Title="ContextMenuWindow1" Height="300" Width="300">
        
        <Grid>
    
            <Button Content="button1" Margin="50">
                <Button.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="menu1" />
                        <MenuItem Header="menu2">
                            <MenuItem Header="menu2a" />
                            <MenuItem Header="menu2b" />
                            <MenuItem Header="menu2c" />
                        </MenuItem>
                        <MenuItem Header="menu3" />
                    </ContextMenu>
                </Button.ContextMenu>
            </Button>
            
        </Grid>
        
    </Window>
    

  •  実行後、ボタン上で右クリックすると、コンテキストメニューが表示されます。 コンテキストメニューは、コントロールの ContextMenu プロパティにインスタンスを設定します。 コンテキストメニューの1つ1つのメニュー項目は、メニューコントロールのメニュー項目と同じ MenuItem を使って登録します。

  • スポンサーリンク


  •  それではメニュー項目をクリックしたときのイベント処理を見てみます。

  • <Window x:Class="ContextMenuWindow2"
            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:z04_NormalControls"
            mc:Ignorable="d"
            Title="ContextMenuWindow2" Height="300" Width="300">
    
        <Grid>
    
            <Button Content="button1" Margin="50">
                <Button.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="menu1" Click="Menu_Click" />
                        <MenuItem Header="menu2">
                            <MenuItem Header="menu2a" />
                            <MenuItem Header="menu2b" />
                            <MenuItem Header="menu2c" />
                        </MenuItem>
                        <MenuItem Header="menu3" />
                    </ContextMenu>
                </Button.ContextMenu>
            </Button>
    
        </Grid>
    
    </Window>
    

    Public Class ContextMenuWindow2
    
        Private Sub Menu_Click(sender As Object, e As RoutedEventArgs)
    
            MessageBox.Show("Hello, WPF!")
    
        End Sub
    
    End Class
    

  •  ボタンのクリックと同じですね。