2016-06-20 11 views
0

このコードを使用してキーが押されたことを認識しますが、矢印を認識しようとすると何も表示されず、TestFunction()もアクティブになりません。c#UWPでのKeyCodeの問題

private void CoreWindow_CharacterReceived(CoreWindow sender, CharacterReceivedEventArgs args) 
{ 
    if (args.KeyCode == 39) //Right Arrow 
    { 
     //Do somthing 
     TestFunction(); 
    } 
    else //Detect All arrows KeyCode(Never display anything for this keys) 
    { 
     Debug.Write(args.KeyCode.ToString()); 
    } 
} 

PD:私は、実行時にこのコードを使用:矢印は正確に文字でない

+0

をあなたがこの方法でデバッガを得ることを確認していますか? – Neel

+0

はい、私は、すべてのキーを得るが、上下、左、右、コントロール、alt – Onelio

答えて

1

Window.Current.CoreWindow.CharacterReceived += CoreWindow_CharacterReceived; 

感謝。多分あなたは考慮すべきですKeyUpKeyDownイベントがありますか?

+0

VirtualKeyとして? 私はすでにそれを試して、同じ結果を与える。 – Onelio

+0

おそらくそれは焦点ですか?このリンクを見てくださいhttps://social.msdn.microsoft.com/Forums/sqlserver/en-US/944e2037-e4cf-4299-9b0a-a685ff97f304/uwp-arrows-keys-as-trigger-in-uwp? forum = wpdevelop – kra

+0

たぶん、すべての重要な仕事は、私はスペースや単語を押すことができますが、矢印やコントロールキーは使用できません。 – Onelio

0

しかし、すべてのキー仕事、私はスペースまたは任意の単語を押すことができますが、矢印やコントロールキーではない

CoreWindow.CharacterReceived新しい文字は、入力キューによって受信されたときにイベントが発生しています。 文字は、テキスト、数字、または記号を表すための単一のビジュアルオブジェクトです。矢印またはコントロールキーは、いずれの文字も表しません。したがってCoreWindow.CharacterReceivedイベントは、これらのキーが押されるとが発動することはありません。あなたは、押されて矢印と制御、および任意の文字を表すものではありません他のキーを含むキーボード上のどのキーを認識するUIElement がありながら、キーボードのキーを/押し解除されたときに発生します(UIElement.KeyDownまたはUIElement.KeyUpイベントを使用したい場合は

フォーカス)を使用してください。

MainPage.xamlを::

<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"> 
    <!--Define a control which can have focus and accept input--> 
    <TextBox Header="Get Focus and Press Any key on Keyboard" x:Name="txt1" KeyDown="txt1_KeyDown" /> 
</StackPanel> 

MainPage.xaml.cs:後

は、私が確認した簡単なコードである

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 
    } 

    private async void txt1_KeyDown(object sender, KeyRoutedEventArgs e) 
    { 
     // Right Arrow key Pressed 
     if (e.Key == Windows.System.VirtualKey.Right) 
     { 
      // Do something 
      Debug.WriteLine(e.Key.ToString()); 
      await new MessageDialog(e.Key.ToString()).ShowAsync(); 
     } 
     // Other Keys Pressed 
     await new MessageDialog(e.Key.ToString()).ShowAsync(); 
    } 
関連する問題