как убрать в смещение текстового курсора в TextBox при замене точки на запятую. (C#, WPF)
В WPF добавил обработчик TextChanged для замены точки на запятую при вводе значения, но столкнулся с другой проблемой, когда ставлю точку, то она меняется на запятую и текстовый курсор уходит в самое начало строки и нужно его перемещать обратно в конец числа и продолжать вводить значение, мне кажется это не очень правильно и удобно, подскажите как исправить смещение текстового курсора?
private void A_text_TextChanged(object sender, TextChangedEventArgs e)
{
string str = A_text.Text;
if (str.Contains("."))
{
string s = str.Replace(".", ",");
A_text.Clear();
A_text.AppendText(str.Replace(".", ","));
}
}
Ответы (1 шт):
Автор решения: xellan
→ Ссылка
Вы должны сохранить SelectionStart свойство в переменной, а затем при срабатывание условий и правок текста установить для SelectionStart значение, указанное в переменной. Тем самым вы вернете курсор в любую позицию где он до этого был.
private void A_text_TextChanged(object sender, TextChangedEventArgs e)
{
var cursorPosition = A_text.SelectionStart; // сохраняем текущую позицию курсора
if (A_text.Text.Contains("."))
{
A_text.Text = A_text.Text.Replace(".", ",");
A_text.SelectionStart = cursorPosition; // устанавливаем курсор в нужную позицию
}
}