今天接到好友一个很有意思的BUG~~事情是这样的 在一个WPF程序中拖入一个TextBox
然后在TextChanged 加入一个 MessageBox.Show(" ");(随便弹出什么内容都可以)
有意思的来了
当你输入英文时候很OK没有问题 当你输入中文就会弹出
NullReferenceException{"未将对象引用设置到对象的实例。"}。

奇怪 - - 我的TextBox 明明还在的
不死心 继续尝试别的,发现复制中文上去不会出现这样的BUG,继续不断尝试 发现了一个很有意思的东西

在输入中文时UndoAction 变化是先
成员Create 然后Merge
| MSDN UndoAction 枚举 | |
撤消堆栈是如何引起的或如何受文本更改影响。
| 成员名称 | 说明 | |
|---|---|---|
| None | 此更改根本不会影响撤消堆栈 | |
| Merge | 此更改将合并到以前的撤消单元中 | |
| Undo | 此更改是调用 Undo() 的结果 | |
| Redo | 此更改是调用 Redo() 的结果 | |
| Clear | 此更改将清除撤消堆栈 | |
| Create | 此更改将创建新的撤消单元 |
这里 猜测 可能我们在输入中文时候是Create其撤销单元 index=0, 然后发生了Merge 可是以前并没有 撤销单元 所以才会 出现这个异常? 知道的高手请赐教下
知道问题就好解决了只需要在TextBox 加入UndoLimit="0" 禁用撤销功能就不会出现异常了 可是这样有带来新的问题 文本框不能撤销 +_+
不知道有木有人能解决这个问题 或有更好的解决方案

posted on
浙公网安备 33010602011771号