相关疑难解决方法(0)

为什么PreviewTextInput不处理空格?

我在窗口处理PreviewTextInput事件以处理来自磁卡读卡器的滑动.我在窗口上处理事件,因此无论哪个控件都集中在哪里都无关紧要.

一旦处理程序确定滑动已启动(输入'%'或';'字符),它将处理所有事件,直到滑动完成.该系统通常运行良好,但有一些重要的例外:

当从阅读器输入空格字符(可能还有\n字符)时,它们不会被PreviewTextInput处理,而是直接发送到任何聚焦的控件中.奇怪的是,处理程序确实接收\ r \n字符.这会导致不良行为.

我想要的是一种在窗口级别捕获所有关键事件的方法,并且如果我愿意,还有机会处理它们.我尝试过使用PreviewKeyDown,发现使用它有点麻烦,并从中获取char值.PreviewTextInput更好,因为我可以简单地读取Text属性.

是否有一个原因PreviewTextInput不处理某些字符?是否有任何类似的方法来获取所有事件,包括空格?

keyboard wpf events

19
推荐指数
2
解决办法
1万
查看次数

KeyEventArgs.Key to char

有没有办法将WPF转换KeyEventArgs.KeyChar

我试着用KeyInterop:

var x = (Char)KeyInterop.VirtualKeyFromKey(e.Key);
Run Code Online (Sandbox Code Playgroud)

对于数字和字母,它工作正常,但对于其他字符,它没有.例如,OemComma它返回'1/4'而不是','.

我需要它来防止用户输入TextBox除数字和分隔符(即逗号或句号)之外的任何字符.

c# wpf textbox keyeventargs

13
推荐指数
3
解决办法
2万
查看次数

帮助WPF TextCompositionManager事件

这方面的文档非常粗制滥造.您可以连接许多事件来监视和控制通过TextCompositionManager访问的文本输入.如果您想要做一些像snag卡刷卡数据这样的事情,那就是你要做的事情.

有三个事件的关注文本输入: 的TextInput,TextStartTextUpdate.每个事件有两个版本,一个是事件隧道(从窗口向下移动到具有焦点的控件)以及当它冒泡(从聚焦的UI元素向上移动到窗口)时:

隧道:

  • PreviewTextInputEvent
  • PreviewTextInputStartEvent
  • PreviewTextInputUpdateEvent

冒泡:

  • TextInputEvent
  • TextInputStartEvent
  • TextInputUpdateEvent

因此,根据您在TextCompositionManager中挂钩的逻辑树中的位置,您可以在它们到达事件焦点之前修改这些文本事件,或者之后只查看它们.所有这些在文档和使用中都非常简单明了.


TL; DR

我找不到这三个事件的合理定义.可接受的答案不仅会定义三个事件(TextInput,TextInputStart和TextInputUpdate),还会比较和对比它们.没有分享答案,请参考您的来源和维基百科是不受限制的.你的成绩的25%取决于此.

wpf events textinput textcompositionmanager

8
推荐指数
1
解决办法
5031
查看次数