これは非常に簡単かもしれません。
WinFormにテキストボックスText="ABCDEFGH"があります。「BCD」を選択し、Iビーム(カーソル、カレット、点滅する「|」)を「A」と「B」の間に残す必要があります。SelectionStart=1およびSelectionLenght=3の設定は機能せず、理解できません。
これは非常に簡単かもしれません。
WinFormにテキストボックスText="ABCDEFGH"があります。「BCD」を選択し、Iビーム(カーソル、カレット、点滅する「|」)を「A」と「B」の間に残す必要があります。SelectionStart=1およびSelectionLenght=3の設定は機能せず、理解できません。
ドキュメントに記載されているようにSelectionLength
、を0に設定する必要があります。
SelectionStartをテキストボックス内のキャレットの移動先の位置に設定し、SelectionLengthプロパティをゼロ(0)の値に設定することにより、プログラムでテキストボックス内のキャレットを移動できます。
問題がBCDが実際に選択されていることであるが、カーソルをBの前に戻したい場合は、テキストを選択するとカーソルがテキストの最後に移動するため、フレームワークのプロパティを介してそれを行うことはできないと思います。 。ここに記載されているように、座標とネイティブの相互運用機能を使用する必要があります。
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetCaretPos(out Point lpPoint);
次に、 SetCaretPosを呼び出すことができます。
プロパティをTrueに設定するTextBox.Multiline
と、負の選択長を使用してこれを行うことができます。負の値を許可Select()
しないため、オーバーロードを使用する必要があります。SelectionLength
textBox.Select(1 + 3, -3);