显示表单后如何引发TextPreviewInput

时间:2019-06-01 08:50:28

标签: c# wpf

我有一个TextBox和一个PreviewTextInput,以防止用户输入某些字符:

private void TextBox_OnPreviewTextInput(object sender, TextCompositionEventArgs e)
{
    if (!Regex.IsMatch(e.Text, @"[abc]"))
    {
        MessageBox.Show("Message");
        e.Handled = true;
    }
}

当用户键入某些文本包含abc时,将显示该消息。到目前为止,一切都还好。但是我有一个问题。当用户按下可自定义的快捷键时,我的应用可以从最小化状态恢复。在这种情况下,尽管有我本人,也将引发该事件并在显示表单之前显示消息。请运行代码以了解我的意思。

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

    }
}

0 个答案:

没有答案