イベントに参加すると、変更前のテキストと新しいキャラクターに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)..]