У меня есть программа WPF C #, в которой я пытаюсь удалить определенные символы из текстового поля в событии TextChanged. Скажем, например, знак доллара. Вот код, который я использую.
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 он удаляет символ $ из текста текстового поля, но он также перемещает курсор в НАЧАЛО текстового поля, которое не является моим желаемая функциональность.
В качестве обходного пути я подумал о перемещении курсора в конец текста в текстовом поле, но проблема в том, что если бы курсор был расположен в некоторой средней позиции, это было бы не очень удобно для пользователя. Скажем, например, текст в текстовом поле был 123ABC, и если бы у меня был курсор после 3, то перемещение курсора в конец текста означало бы, что при следующем нажатии клавиши пользователь будет вводить данные после C, а не после 3, что является нормальный функционал.
Кто-нибудь знает, почему происходит это смещение курсора?
PreviewTextInput
. - person Paul Walls   schedule 31.08.2011