如何检测正斜杠以及是否满足条件检查 Enter Key C# WPF

How to detect forward slash and if condition is satisfied check for Enter Key C# WPF

我正在开发 wpf 应用程序,它包含主 Window.xamlDataGrid 以及当然里面的文章,如果用户 select 文章和按“/”,然后我应该让他编辑价格 - 用价格 解锁字段,当用户完成后他应该按回车键,然后我应该检查是否已按回车键,这样我就可以更新该商品的新价格。

首先,这就是我检查“/”是否按下的方式,因为我无法为这个键争取正确的 OEM,我害怕什么当用户在他的键盘上更改语言时可能会发生,所以我这样做了。

 private void Window_PreviewTextInput_1(object sender, TextCompositionEventArgs e)
        {
            if (e.Text == "/")
            {

                    if (globalTemp != null)
                    {
                        txtPrice.IsEnabled = true;

                    }
             }

        }

在我给用户更改价格的机会后,我应该在 Enter 键上更新商品价格,所以在这个条件 if (e.Text == "/") 也被点击后我如何检查,因为我看到没有 e.Key 在这个 TextCompositionEventArgs e...

编辑:

也许我可以在这里简单地附加新事件,所以实际上我可能有两个事件,第一个检测“/”并解锁 txtPrice,另一个在按下 enter 时更新它,所以另一个事件可能看起来像这样:

 private void txtPrice_KeyDown(object sender, KeyEventArgs e)
 {
   if (e.Key == Key.Return)
   {
     // UPDATE PRICE HERE 
   }   
} 

谢谢大家 干杯

处理 PreviewKeyDown 事件以检测 ENTER 键按下和 PreviewTextInput 事件以检测“/”。

毕竟 ENTER 不是一个字符,“/”也不是一个键,所以分开处理这两个事件是非常有意义的。

如果您想检测组合的 ENTER +“/”组合键,您可以使用一个布尔字段来跟踪是否在按下 ENTER 之前就按下了“/”:

private bool _slash = false;
private void Window_PreviewTextInput_1(object sender, TextCompositionEventArgs e)
{
    if (e.Text == "/")
    {
        _slash = true;
        e.Handled = true;
        //...
    }
    else
    {
        _slash = false;
    }
}

private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == System.Windows.Input.Key.Enter && _slash)
    {
        // "/" + ENTER was pressed...
    }
}