C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: WPFのメニューにおけるショートカットキー


(過去ログ 82 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■48925 / inTopicNo.1)  WPFのメニューにおけるショートカットキー
  
□投稿者/ tako (8回)-(2010/04/16(Fri) 15:56:15)

分類:[C#] 

[Visual Studio 2008 Express, Vista]

いつもお世話になっています。
WPFのメニューバー(Menuクラス、MenuItemクラス)のショートカットキーについての質問です。
以下のようなXAMLコードでテキストボックス上にメニューバーを配置して、それぞれのメニュー項目にショートカットキーを割り当てたいのですが、
うまくいきません。

<Window x:Class="Test.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <TextBox Name="textBox1" Background="White" Margin="0,20,0,0"></TextBox>
        <Menu Height="22" Name="menu1" VerticalAlignment="Top">
            <MenuItem Header="ファイル(_F)" >
                <MenuItem Header="新規(_N)" InputGestureText="Ctrl+N" Name="NewMenu" Click="NewMenu_Click" />
                <MenuItem Header="開く(_O)" InputGestureText="Ctrl+O" Name="OpenMenu" Click="OpenMenu_Click" />
                <MenuItem Header="上書き保存(_S)" Name="SaveMenu" InputGestureText="Ctrl+S" Click="SaveMenu_Click" />
            </MenuItem>
        </Menu>
    </Grid>
</Window>


各項目には「新規(N)     Ctrl+N」のように表示されるのですが、実際に「Ctrl+N」を押してもクリックイベントが発生していません。



WPFについては、まだまだ初心者なので初歩的な質問かもしれませんが、どうぞよろしくお願いします。

引用返信 編集キー/
■48926 / inTopicNo.2)  Re[1]: WPFのメニューにおけるショートカットキー
□投稿者/ 囚人 (497回)-(2010/04/16(Fri) 16:09:42)
2010/04/16(Fri) 16:23:25 編集(投稿者)
NewとかOpenみたいな単純なものだと限定して…

<MenuItem Header="ファイル(_F)" >
	<MenuItem Command="ApplicationCommands.New" />
	<MenuItem Command="ApplicationCommands.Open" />
	<MenuItem Command="ApplicationCommands.Save" />
</MenuItem>

としておいて、Window1.xaml.csで

public Window1()
{
	InitializeComponent();

	this.CommandBindings.Add(new CommandBinding(ApplicationCommands.New, delegate{MessageBox.Show("hoge");}));
}

こんな感じ。(Newでメッセージボックスが出る)

引用返信 編集キー/
■48927 / inTopicNo.3)  Re[2]: WPFのメニューにおけるショートカットキー
□投稿者/ tako (10回)-(2010/04/16(Fri) 16:34:37)
No48926 (囚人 さん) に返信
> 2010/04/16(Fri) 16:23:25 編集(投稿者)
>
> NewとかOpenみたいな単純なものだと限定して…
>
> <MenuItem Header="ファイル(_F)" >
> <MenuItem Command="ApplicationCommands.New" />
> <MenuItem Command="ApplicationCommands.Open" />
> <MenuItem Command="ApplicationCommands.Save" />
> </MenuItem>
>
> としておいて、Window1.xaml.csで
>
> public Window1()
> {
> InitializeComponent();
>
> this.CommandBindings.Add(new CommandBinding(ApplicationCommands.New, delegate{MessageBox.Show("hoge");}));
> }
>
> こんな感じ。(Newでメッセージボックスが出る)
>


返信ありがとうございます!
確かに、新規や開くなどのショートカットキーでは動くようになりました!   
しかし、これでは独自のショートカットキーを割り当てることができません・・・。どのようにすれば独自のショートカットキーを割り当てることができるでしょうか?
ご教授いただけると非常に助かります。
引用返信 編集キー/
■48928 / inTopicNo.4)  Re[3]: WPFのメニューにおけるショートカットキー
□投稿者/ 囚人 (498回)-(2010/04/16(Fri) 17:16:41)
メッセージボックスを表示するコマンドの例。
Ctrl+Mもしくはメニューで起動する。


名前空間、WfpApplication1 に

public class MyCommands
{
	public static RoutedUICommand わーい = new RoutedUICommand("わーい", "わーい", typeof(MyCommands), new InputGestureCollection { new KeyGesture(Key.M, ModifierKeys.Control) });
}

というコマンド作っておいて、XAMLに


<Window
…
xmlns:local="clr-namespace:WpfApplication1"
>

…

<MenuItem Header="ファイル(_F)" >
	<MenuItem Command="local:MyCommands.わーい" />
</MenuItem>

で、

public Window1)
{
	InitializeComponent();

	this.CommandBindings.Add(new CommandBinding(MyCommands.わーい, delegate{MessageBox.Show("わーいが起動されたよ");}));
}


引用返信 編集キー/
■48932 / inTopicNo.5)  Re[4]: WPFのメニューにおけるショートカットキー
□投稿者/ tako (11回)-(2010/04/16(Fri) 23:02:58)
No48928 (囚人 さん) に返信

丁寧にありがとうございます!  納得のいく動きが実現できました。
自分なりにコマンドについて調べて、これからいろいろ試していきたいです。
ありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -