5

テキストを編集するとき、ユーザーはキーボードのShiftボタンと方向キーを使用して選択を変更できます。一方の位置は固定されたままで、もう一方の位置は移動します。左を押すと、固定部の左側に可動部ができます。

WPFのTextBoxでユーザーの選択を動的に変更しようとしています(説明のために、ペアで文字を選択したいとします。たとえば、Shift +左を押すと、1つではなく2つの文字が選択されます) 。ただし、SelectionStart / SelectionIndex / CaretIndex / Selectを使用する場合、選択範囲の「移動端」は常に選択範囲の右端になり、Shiftと左の組み合わせは役に立たなくなります。

「選択方向」を維持する方法はありますか?

4

4 に答える 4

6

これはあなたが探している答えではありませんが、うまくいくでしょう。コマンドを呼び出して、WPF と同じように実行します。

     EditingCommands.SelectLeftByCharacter.Execute(null, textBox1);
于 2009-11-24T20:47:27.833 に答える
2

それらのどれも機能しません。SelectionLength を負にすることはできず、CaretIndex は常に SelectionStart と同じです。これは TB の設計上のバグであり、保護されたスコープ内でも有効な状態を達成できないためです。

このコマンドは実際には機能しますが、現在分析されているテキスト ボックスの選択方向を判断することはできません。解決策は 1 つしかありませんが、これは醜い回避策です。マウスとキーボードのイベント ハンドラーをオーバーライドすることで、独自のオブザーバー コードを記述できます。

于 2011-06-22T13:57:51.657 に答える
0

私が考えることができる唯一の可能性は、SelectionStartを設定してから、SelectionLengthを負にすることです。

于 2009-10-17T14:03:01.933 に答える
0

SelectionStart/SelectionLength を設定する前または後に、 CaretIndex プロパティを設定しようとしましたか?

于 2009-11-22T06:09:08.133 に答える