如何检测正斜杠和条件是否满足检查输入密钥C#WPF
我正在研究wpf应用程序,它包含主要Window.xaml
与DataGrid
它和文章里面的文章,我应该做的下一步,如果用户选择文章和新闻“/”,比我应该让他编辑价格 - 解锁领域与价格,当用户完成后,他应该击中输入,之后,我应该检查是输入hitted,所以我可以更新该文章的新价格。如何检测正斜杠和条件是否满足检查输入密钥C#WPF
首先,这就是我要查看的是“/”,因为我无法为这个按键正确对抗原始设备制造商,并且我担心用户在键盘上更改语言时会发生什么,所以我这样做了。
private void Window_PreviewTextInput_1(object sender, TextCompositionEventArgs e)
{
if (e.Text == "/")
{
if (globalTemp != null)
{
txtPrice.IsEnabled = true;
}
}
}
我给oportunity用户后改价,我应该在回车键更新文章的价格,所以我怎么会这样条件if (e.Text == "/")
检查后也进入点击,因为我看到有这不e.Key
TextCompositionEventArgs e
...
编辑:
也许我可以简单地在此附上新的事件,所以其实我可能有两个事件,第一个发现“/”和解锁txtPrice,另有1如果输入被按下,更新它,所以anot她的事件可能是这样的:
private void txtPrice_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return)
{
// UPDATE PRICE HERE
}
}
谢谢你们 干杯
处理的PreviewKeyDown
事件来检测ENTER按键和PreviewTextInput
事件检测“/”。
毕竟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...
}
}
这就是我所做的,但是我面临的问题是,当我用“/”解锁领域时,即使我不想在那里看到该字符,也会在该字段中写入该字符,因为我们正在谈论价格,所以我想我应该写在那里e.Handled = true;即使我没有太多的经验,说实话,我不知道那是做什么,如果我这样做,我会被禁止在解锁的领域进入任何东西,(仅仅因为这个e.Handled =真;)..我该如何解决这个队友? :/我认为你不需要Window_PreviewKeyDown事件,你应该直接附加到unl。领域? –
只有在e.Text等于“/”的情况下,才能将TextCompositionEventArgs的Handled属性设置为true。 – mm8
是啊,e.Handled财产是非常有用的,他做了事情,所以队友可以给我们几句关于你的经验,我需要理解为什么e.Handled帮助我们,当它是在第一个条件,我把它放在在我的私人无效Window_PreviewTextInput_1开始,我无法在我的文本框中输入任何内容..所以队友请给我们几句话,你的工作是非常好的队友!我真的很感激它! –
你放“KeyDown”事件中的中断点,并查看按下“OEM”正斜杠时事件代码是什么? – Abion47
@ Abion47我怎么能这样做?我如何检查“OEM”Fwd Slash的代码?当我捕捉如果(e.Text ==“/”){我应该在这里,为哪个属性阅读“OEM”代码}? –
@ Abion47检查我的问题的更新。 –