TextChanged イベントでテキスト ボックスから特定の文字を削除しようとする WPF C# プログラムがあります。たとえば、ドル記号を考えてみましょう。これが私が使用するコードです。
private void txtData_TextChanged(object sender, TextChangedEventArgs e)
{
string data = txtData.Text;
foreach( char c in txtData.Text.ToCharArray() )
{
if( c.ToString() == "$" )
{
data = data.Replace( c.ToString(), "" );
}
}
txtData.Text = data;
}
私が抱えている問題は、ユーザーが $ 記号 (Shift + 4) を入力するたびに、TextChanged イベントでテキスト ボックスのテキストから $ 文字を削除しますが、カーソルをテキスト ボックスの BEGINNING ではないテキスト ボックスの先頭に移動することです。必要な機能。
回避策として、カーソルをテキスト ボックス内のテキストの末尾に移動することを考えましたが、カーソルが中間位置に配置されていると、あまりユーザー フレンドリーではないという問題がありました。たとえば、テキスト ボックス内のテキストが 123ABC で、カーソルが 3 の後にある場合、カーソルをテキストの最後に移動すると、次のキー ストロークでユーザーが 3 の後ではなく C の後にデータを入力することになります。通常の機能。
このカーソルシフトが発生する理由を知っている人はいますか?