2

当我参加OnPreviewTextInput活动时,我可以访问更改之前的文本和新字符。如果输入没有改变,是否有一个属性可以告诉我全文会是什么样子?

我将输入限制为边界内的数字。所以我真的不在乎当前的输入是什么。对我来说更有趣的是,检查输入后的数字是否违反边界(= 是非法的,无法处理),整数会是什么样子。

4

1 回答 1

0

实际上,如果用户在输入新数字之前用鼠标选择了一些文本,则建议的代码会失败。仅插入新数字是不够的,必须首先删除突出显示的文本。

在此处输入图像描述

输入 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)..]
于 2020-02-11T03:56:25.573 回答