WinForms RTBのkeyDownイベントを消費するハンドラーがあり、次のコードがあります。
GetTextAtLoc(RTB->SelectionStart); // selects some text at the caret's position
RTB->SelectedText = "SomeOfMyOwn";
GetTextAtLoc(RTB->SelectionStart); // selects the replacement string
RTB->SelectionStart += RTB->SelectionLength - 1;
このコードはその役割を果たしているように見えますが(SelectionStart / Lengthプロパティは正しく更新されています)、カレットは新しい文字列の最後に移動しません-GetTextAtLocの最初の呼び出し時の場所を正しく示しています。テキストボックスを再描画しても効果はないようです。