3

私は C# と XAML を使用して、Windows 8 でメトロ スタイルのアプリケーションを開発しています。キーアップ イベントで Enter ボタンをキャプチャしたいのですが、Enter キーと Space キーを除くすべてのキーボード ボタンで動作します。私のコード

XAML

<Button x:Name="btnName" KeyUp="KeyboardKey_Pressed">
</Button>

C# ソース

 public void KeyboardKey_Pressed(object sender, KeyRoutedEventArgs e)
 {        
     if (e.Key == Windows.System.VirtualKey.Enter)
            ......        
 }

ボタンの代わりに TextBox を使用すると機能することはわかっていますが、ボタンを使用したいと考えています。どうやってやるの?

4

2 に答える 2

1

これは機能します:

using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;


namespace YourNamespace
{
    public sealed class NiceButton: Button
    {
        public NiceButton()
            : base()
        {

        }
        protected override void OnKeyUp(KeyRoutedEventArgs e)
        {
        }
    }
}

名前空間の xmlns を含めることにより、XAML で Button の代わりに NiceButton を使用します。

于 2012-11-24T07:00:39.020 に答える
0

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh868246.aspxによると、

ButtonBase (Button の基本クラス) は KeyUp を処理して、スペースバーまたは Enter キーをチェックできるようにします。このイベントの処理は、ButtonBase が仮想メソッド OnKeyUp をオーバーライドするときに実行されます。

したがって、スペースバーまたは Enter キーをキャプチャしないようにするには、Button から派生する新しいボタン クラスを作成し、OnKeyUp をオーバーライドして、基本クラスの実装を呼び出さないでください。

于 2012-09-12T13:44:48.813 に答える