Я проектирую виртуальную цифровую панель в Windows Form. Пожалуйста, предположите, что у меня есть Del
ключ, чтобы удалить символ textbox
. Когда я нажимаю на textbox
в первый раз, чтобы выбрать его, а затем нажмите клавишу Del
, символ будет удален правильно относительно позиции курсора. Но после обновления содержимого текста свойство SelectionStart
меняется на ноль, и мой мигающий курсор исчез. Я решил эту проблему, временно сохраняя ее значение, прежде чем обновлять содержимое textbox
и модифицировать его в конце.Виртуальная клавиатура в C# - Есть ли элегантный способ обновления Textbox.SelectionStart?
tempSelectionStart = enteredTextbox.SelectionStart; //save SelectionStart value temporarily
enteredTextbox.Text = enteredTextbox.Text.Substring(0, enteredTextbox.SelectionStart - 1)
+ enteredTextbox.Text.Substring(enteredTextbox.SelectionStart,
enteredTextbox.Text.Length - (enteredTextbox.SelectionStart));
enteredTextbox.SelectionStart = tempSelectionStart-1;
Я хочу знать:
- Есть ли более элегантный способ решить эту проблему?
- Как перенести курсор в текстовое поле после первого нажатия клавиши?
Спасибо.
Если вы хотите, ключевые работы Del как Backspace и удалить символ, который помещается левую сторону курсора, только вычитаем один из 'SelectionStart'. Есть ли другой способ? – GntS
Вздох. Вы все еще используете свойство SelectionText. –
Уважаемый Пассажир, можете ли вы направить меня, чтобы сделать это с помощью свойства SelectedText? – GntS