sta*_*low 6 c# character keyboard-events winrt-xaml windows-phone-8.1
更新[2014年7月16日]:问题在技术上是不正确的.阅读答案以获取更多详细信息.
我试图在到达我的文本框之前捕获文本.我发现了以下事实:
KeyDown,KeyUp事件将告诉你什么virtualKey被按下而不是角色!!
CoreWindow.CharacterReceived将捕获该字符,但此
事件不是特定于TextBox的,它会
在到达textBox后告诉您该字符.
现在我的问题是:
任何人都可以告诉我如何在Windows Phone 8.1上捕获Swype键盘的事件?

请注意:
1-我试图在TextBox.Paste中捕获它但它失败了:(
2-事件textBox.textChanged()是不是我期待的BEC该事件火灾键盘完成后,该事件(框TextChanged)会发生火灾后keyDown,keyUp,CharacterReceived无论文本是如何输入.
好的!我已经研究这个问题好几天了,并对其进行了广泛的测试以理解并得出以下结论:
1- 键盘输入由名为 ( CharacterRecieved) 的页面的事件处理。该事件由页面触发并捕获,然后发送到TextBox并将导致TextChanged事件的触发。
2-如果你带着winForms的心态来接触winRT和Windows Phone,你肯定会有我所遇到的困惑,并且需要一些时间来弄清楚[除非你阅读这个答案,这会让它变得更短]。
3-不要期望[正如我错误地预期的那样]输入的字符的事件会在文本框中触发。它将在页面(CoreWindow)上触发,然后更改文本框的文本值,因此您必须在页面级别而不是控件级别捕获该事件。
4-键盘输入一个字母和swype键盘输入一个单词的区别:
**
**
假设textBox.Text = "99";
现在我按数字 7:
1-KeyDown事件将触发:在这里您可以捕获virtualKey但您无法识别该字符,因此按“a”字母您无法知道它是“A”大写还是“a”小写。仍然textBox.Text = "99";
2-CharacterRecieved火;textBox.Text = "997";
3-KeyUp事件火灾;textBox.Text = "997";
4-textChanged火。;textBox.Text = "997";
假设textBox.Text = "99";
我想输入文本“hello”;
swype 将在单词前添加空格,因此它将是“你好”
事件顺序如下:
1- 字符串“hello”中每个字符的循环将触发事件CharacterRecieved,并且该textBox.Text值将位于textBox.Text= "99 "第一次迭代中;然后从第二次迭代开始,textBox.Text = "99 hello";
在每次迭代中,您可以捕获key code [char]本例中的 (32, 110, 101, 108,108, 111)。请注意,现在textBox.Text值已更改,但尚未显示在屏幕上!
2-该textChanged事件将触发两次(很奇怪!我认为一次是空白,第二次是“hello”一词),另外,到目前为止,但textBox.Text = "99 hello"尚未在屏幕上显示,直到两次迭代结束textChanged 事件。
这样我们就注意到 swype 和普通键盘按键事件之间的区别,那就是在 swype 中keyDown keyUp根本没有事件!
现在,如果您了解每种键盘输入方法(swype/非 swype)的场景,您可以根据需要规划验证和应用程序行为。前提是您知道它与旧版 Windows 系统输入完全不同。
我希望这能帮助那里的人,并为他/她节省许多时间的困惑和痛苦:)
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |