6

我知道如何处理关键事件,即

private void Page_KeyUp(object sender, KeyRoutedEventArgs e)
{
  switch (e.Key)
  {
    case Windows.System.VirtualKey.Enter:
      // handler for enter key
      break;

    case Windows.System.VirtualKey.A:
      // handler for A key
      break;

    default:
      break;
  }
}

但是,如果我需要区分小写“a”和大写“A”怎么办?另外,如果我想处理百分号“%”之类的键怎么办?

4

2 回答 2

8

在别处得到了答案。对于那些感兴趣的人...

public Foo()
{
    this.InitializeComponent();
    Window.Current.CoreWindow.CharacterReceived += KeyPress;
}

void KeyPress(CoreWindow sender, CharacterReceivedEventArgs args)
{
    args.Handled = true;
    Debug.WriteLine("KeyPress " + Convert.ToChar(args.KeyCode));
    return;
}

更好的是,将 移动Window.Current.CoreWindow.CharacterReceived += KeyPress;到 GotFocus 事件处理程序中,然后添加Window.Current.CoreWindow.CharacterReceived -= KeyPress;到 LostFocus 事件处理程序中。

于 2013-05-29T02:37:53.767 回答
1

您不能轻易地从中获取此信息,KeyUp因为KeyUp只知道正在按下哪些键,而不知道正在输入哪些字母。您可以检查 shift 键是否按下,也可以尝试自己跟踪大写锁定。最好使用TextChanged事件。

于 2013-05-28T04:52:37.957 回答