Bir Windows uygulamasında bir tuş bileşimini (ör. Control-A
) bulmak istiyorum. KeyDown
olay işleyicisinin, son tuşa basılması hakkında bilgi vardır. Ancak, Control tuşunun da basılıp basılmadığını nasıl anlarım? Belirlemek için CoreVirtualKeyStates.HasFlag(CoreVirtualKeyStates.Down)
kullanabilirsinizEvrensel Windows Uygulamalarında Klavye Durumu alın
9
A
cevap
17
Ctrl anahtar böyle, preslenmiş olan -
Window.Current.CoreWindow.KeyDown += (s, e) =>
{
var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
if (ctrl.HasFlag(CoreVirtualKeyStates.Down) && e.VirtualKey == VirtualKey.A)
{
// do your stuff
}
};
+1
'da hiç çalışmamıştım Sorunuzu doğru anlıyorsam, sayfanızın 'KeyDown' etkinliğine abone olmak yerine, 'Window.Current.CoreWindow.KeyDown' cevabımdaki gibi abone olun. –
+1
Mükemmel! Çok teşekkürler! – ispiro
6
Odaklama her zaman olayı yakalayacaktır olduğu edilse bile AcceleratorKeyActivated olayını kullanabilirsiniz.
public MyPage()
{
Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += AcceleratorKeyActivated;
}
private void AcceleratorKeyActivated(CoreDispatcher sender, AcceleratorKeyEventArgs args)
{
if (args.EventType.ToString().Contains("Down"))
{
var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
if (ctrl.HasFlag(CoreVirtualKeyStates.Down))
{
switch (args.VirtualKey)
{
case VirtualKey.A:
Debug.WriteLine(args.VirtualKey);
Play_click(sender, new RoutedEventArgs());
break;
}
}
}
}
Normalde 'KeyPressed == Control | A' – kevintjuh93
@KevinKal Teşekkürler. Ama bunu denedim. Sadece "A" idi. – ispiro
Kontrol sistem anahtarıdır, böylece farklı bir şekilde oturum açar. Nasıl yapıldığından emin değilim ama bu, – rmn36