我有一个TextBox
和一个PreviewTextInput
,以防止用户输入某些字符:
private void TextBox_OnPreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!Regex.IsMatch(e.Text, @"[abc]"))
{
MessageBox.Show("Message");
e.Handled = true;
}
}
当用户键入某些文本包含a
,b
或c
时,将显示该消息。到目前为止,一切都还好。但是我有一个问题。当用户按下可自定义的快捷键时,我的应用可以从最小化状态恢复。在这种情况下,尽管有我本人,也将引发该事件并在显示表单之前显示消息。请运行代码以了解我的意思。
App.xaml.cs:
public partial class App
{
private KeyboardHook _keyboardHook;
private void App_OnStartup(object sender, StartupEventArgs e)
{
_keyboardHook = new KeyboardHook();
_keyboardHook.SetHook();
_keyboardHook.OnKeyDownEvent += OnHookKeyDown;
}
private void OnHookKeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData==(Keys.Control | Keys.G)) //This shortcut is customizable by user
{
MainWindow.WindowState = WindowState.Normal;
}
}
}