2013-05-28 14 views
6

Jestem świadomy, jak radzić sobie najważniejsze wydarzenia, tjHandling VirtualKey w Windows 8 Store Apps z C#

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; 
    } 
} 

ale co jeśli muszę rozeznać między małymi literami 'a' i upper-case ' ZA'? Co się stanie, jeśli chcę obsługiwać klucze takie jak znak procentowy "%"?

Odpowiedz

1

Nie można łatwo uzyskać tych informacji od KeyUp, ponieważ KeyUp wie tylko, które klawisze są naciskane, a nie które litery są wpisywane. Możesz sprawdzić, czy klawisz Shift jest wyłączony, a Ty możesz również spróbować samodzielnie zablokować czapki. Lepiej wykorzystasz zdarzenie TextChanged.

+0

Dzięki Xyroid. Próbuję obsłużyć warunek, w którym naciśnięcia klawiszy są oceniane pojedynczo i kod jest wywoływany na podstawie pierwszego naciśniętego klawisza. Niestety funkcja TextChanged nie będzie działać, ponieważ naciśnięcia klawiszy nie pojawiają się naraz. – joelc

+0

Będziesz zaskoczony, gdy ktoś spróbuje użyć japońskiej klawiatury. Konwersja klawiszy na znaki jest bardzo trudna. Niech menedżer wejściowy go obsłuży. –

8

Masz odpowiedź w innym miejscu. Dla tych, którzy są zainteresowani ...

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; 
} 

Nawet lepiej przesunąć Window.Current.CoreWindow.CharacterReceived += KeyPress; do obsługi zdarzeń GotFocus i dodać Window.Current.CoreWindow.CharacterReceived -= KeyPress; do obsługi zdarzeń LostFocus.

+2

Człowieku, Twoja odpowiedź była jedyna i mam na myśli tylko pomoc w znalezieniu dokumentacji, która mogłaby się znaleźć w Internecie w związku ze zdarzeniem CharacterReceived. Więc to mi podpowiedziało, odpowiadając na moje własne pytanie: http://stackoverflow.com/questions/24612653/windows-phone-8-1-shift-key-state-abnormal-behavour Dziękuję bardzo – stackunderflow

+1

Cieszę się, że pomogło ci na zewnątrz!! – joelc

+1

Dziękujemy! Pomógł mi także odpowiedzieć na moje własne pytanie :) http://stackoverflow.com/questions/25475739/activate-a-textbox-automatically-when-user-starts-typing –