Windows应用程序c# - 封锁开/关

时间:2014-02-06 11:03:43

标签: c# windows-store-apps capslock

我已设法确定封锁是打开还是关闭,以便我可以显示正确的错误消息。但是,如果在文本框获得焦点时封锁已关闭,则我的代码才有效。但是如果它打开,则不应出现错误消息。

private Boolean CapsLock = false; //here...how to determine if it is on or off propperly
private void loginCredentials_KeyUp(object sender, KeyRoutedEventArgs e)
{ 
    switch (e.Key.GetHashCode())
    {
        //...
        case 20: 
            CapsLock = (CapsLock) ? false : true;
            errorMessage.Text = (CapsLock) ? ((App)(App.Current)).loader.GetString("capslockError") : String.Empty;
            break;
    }
}

1 个答案:

答案 0 :(得分:2)

查找当前密钥状态的WinRT方法为GetKeyState,因此您可以根据需要直接检查密钥值(类似于评论中提到的IsKeyLocked)。

我注意到打开按键的哈希码似乎是错误的,你应该根据VirtualKey枚举中的代码检查键值本身(我猜你已经注意到哈希码只是这个值,意味着它有效。)

如果您确实需要立即知道何时按下大写锁等键,而不仅仅是在文本字段具有焦点时,您可以在应用程序根目录上注册键处理程序。通常情况下,按键将由控件(如处理它们的文本框)使用,但您可以使用带有AddHandler参数的true来收听所有按键操作,包括处理的按键,例如:

Window.Current.AddHandler(UIElement.KeyUpEvent, new KeyEventHandler(...), true);

或者使用Window.Current.CoreWindow.KeyUp事件。