2017-02-06 26 views
0

我正在研究wpf应用程序,它包含主要Window.xamlDataGrid它和文章里面的文章,我应该做的下一步,如果用户选择文章和新闻“/”,比我应该让他编辑价格 - 解锁领域与价格,当用户完成后,他应该击中输入,之后,我应该检查是输入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.KeyTextCompositionEventArgs e ...

编辑:

也许我可以简单地在此附上新的事件,所以其实我可能有两个事件,第一个发现“/”和解锁txtPrice,另有1如果输入被按下,更新它,所以anot她的事件可能是这样的:

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

谢谢你们 干杯

+0

你放“KeyDown”事件中的中断点,并查看按下“OEM”正斜杠时事件代码是什么? – Abion47

+0

@ Abion47我怎么能这样做?我如何检查“OEM”Fwd Slash的代码?当我捕捉如果(e.Text ==“/”){我应该在这里,为哪个属性阅读“OEM”代码}? –

+0

@ Abion47检查我的问题的更新。 –

回答

1

处理的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... 
    } 
} 
+0

这就是我所做的,但是我面临的问题是,当我用“/”解锁领域时,即使我不想在那里看到该字符,也会在该字段中写入该字符,因为我们正在谈论价格,所以我想我应该写在那里e.Handled = true;即使我没有太多的经验,说实话,我不知道那是做什么,如果我这样做,我会被禁止在解锁的领域进入任何东西,(仅仅因为这个e.Handled =真;)..我该如何解决这个队友? :/我认为你不需要Window_PreviewKeyDown事件,你应该直接附加到unl。领域? –

+0

只有在e.Text等于“/”的情况下,才能将TextCompositionEventArgs的Handled属性设置为true。 – mm8

+0

是啊,e.Handled财产是非常有用的,他做了事情,所以队友可以给我们几句关于你的经验,我需要理解为什么e.Handled帮助我们,当它是在第一个条件,我把它放在在我的私人无效Window_PreviewTextInput_1开始,我无法在我的文本框中输入任何内容..所以队友请给我们几句话,你的工作是非常好的队友!我真的很感激它! –

相关问题