バックグラウンドスレッドが毎秒値を更新するWindowsフォームテキストボックスがあります。テキストボックス内にカーソルを置くと、次回の更新時に現在の位置が失われます。テキストの選択についても同じです。
私はそれをそのように解決しようとしました
protected void SetTextProgrammatically(string value)
{
// save current cursor position and selection
int start = textBox.SelectionStart;
int length = textBox.SelectionLength;
// update text
textBox.Text = value;
// restore cursor position and selection
textBox.SelectionStart = start;
textBox.SelectionLength = length;
}
ほとんどの場合、うまく機能します。動作しない場合は次のようになり
ます。1)テキストボックスのテキストの最後にカーソルを置きます
。2)Shiftキーを押しながら、<-矢印キーを使用してカーソルを左に移動します
。選択が正しく機能しません。
組み合わせのように見え、カーソルSelectionStart=10
をSelectionLength=1
自動的に位置11に移動します(私が望むように10ではありません)。
何かできることがあれば教えてください!Framework.NET2.0を使用しています。
それ以外のテキストボックスにカーソル位置を設定する方法が必要SelectionStart+SelectionLength
です。