2016-01-05 4 views
2

Мне нужно, чтобы обнаружить, если CapsLock ключ заблокирован (активен) или нет, но когда я пытаюсь это:Caps Обнаружение блокировки - Windows 10 против Windows 10 Mobile - C#

public void CapsLockStatus() 
{ 
    if ((CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.CapitalLock) & 
     CoreVirtualKeyStates.Locked) != 0) 
    { 
     //true -> Caps Lock is enable; 
    } 
    else 
    { 
     //false -> Caps Lock is disable; 
    } 
} 

В Windows 10 Desktop, он отлично работает, но в Windows 10 mobile это не так. Я пытаюсь заменить "GetKeyState" на "GetAsyncKeyState", но проблема все еще остается.

В чем проблема? Кто-нибудь Помогите мне?

Благодаря

ответ

3

Этот код, в Windows 10 Desktop, отлично, отлично работать, но в вдовами 10 мобильных не

На самом деле, нет CapsLock ключа в виртуальной клавиатуры в Windows, 10 Mobile OS, если нам нужно обеспечить ввод заглавной буквы, просто дважды нажмите клавишу Shirt. Поэтому вы не можете обнаружить это в этом сценарии.

enter image description here

Следующий вопрос, почему вы должны обнаружить CapsLock ключ в UWP мобильного приложения? Единственный возможный сценарий для пользователя ввода пароля и напоминания, но, как известно, пользовательский интерфейс на мобильном устройстве отличается от того, который находится на ПК, если пользователь дважды нажимает клавишу Shift, он/она заметит это изменение, поскольку виртуальная клавиатура заняла много места на экране.

Если вам действительно нужно это сделать, подумайте об использовании события CoreWindow.CharacterReceived, чтобы обнаружить текущий KeyCode, чтобы проверить, набрал ли пользователь прописную букву. См. my answer in this case

+0

Чэнь, спасибо за быстрый ответ. Я использую событие «KeyDown» вместо «CharaterReceived», потому что приемник Charater запускается только при вводе данных в элементе, и мне нужно обнаружить ключ заблокирован или нет, независимо от того, есть ли какой-либо элемент с фокусом. Спасибо – fipcurren88

 Смежные вопросы

  • Нет связанных вопросов^_^