当我参加OnPreviewTextInput
活动时,我可以访问更改之前的文本和新字符。如果输入没有改变,是否有一个属性可以告诉我全文会是什么样子?
我将输入限制为边界内的数字。所以我真的不在乎当前的输入是什么。对我来说更有趣的是,检查输入后的数字是否违反边界(= 是非法的,无法处理),整数会是什么样子。
实际上,如果用户在输入新数字之前用鼠标选择了一些文本,则建议的代码会失败。仅插入新数字是不够的,必须首先删除突出显示的文本。
输入 9 应该得到 12945。但是 Text.Insert(CaretIndex, e.Text) 返回 129345。正确的代码是:
Text.Remove(CaretIndex, SelectionLength).Insert(CaretIndex, e.Text)
或者在 C# 8 中
Text[..CaretIndex] + e.Text + Text[(CaretIndex + SelectionLength)..]