textbox всегда помещает курсор в начало текста - PullRequest
1 голос
/ 27 сентября 2010

У меня есть текстовое поле, ничего удивительного там.Когда текст изменяется, я вызываю событие change и помещаю все в этом текстовом поле в прописные буквы, используя .upper ().Тем не менее, текстовое поле всегда помещает курсор в начало текстового поля.Например, предположим, что вы вводите abc, он будет отображаться в поле как CBA, поскольку курсор всегда остается, если только вы не используете клавиши со стрелками в начале текстового поля, почему это так и как вы это исправляете?

collector_initials.Text = collector_initials.Text.ToUppper();

Спасибо, р.

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

Установка свойства Text сбрасывает свойства TextBox.SelectionStart и SelectionLength.Изменение точки вставки в процессе.Здесь доступна лучшая мышеловка, реализуйте событие KeyPress, чтобы вы могли изменить нажатую клавишу.Как это:

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
        e.KeyChar = char.ToUpper(e.KeyChar);
    }
0 голосов
/ 27 сентября 2010

Сохранить текущий индекс перед изменением текста:

int savedIndex = textbox.SelectionStart;

Установите его снова после изменения текста:

// you will have to decide what to do if your index is larger than the text length
textbox.SelectionStart = Math.Min( savedIndex, textbox.Text.Length );
textbox.SelectionLength = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...