Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 22.06.2017
Сообщений: 6
1

Определить местоположение каретки в TextBox

28.10.2017, 19:53. Показов 3853. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, друзья.

Начну сразу с вопроса: Как в TextBox'е определить местоположение каретки? Да, да, именно та самая кареточка, которую мы перемещаем влево-вправо для дальнейшего ввода или редактирования имеющегося текста.

Сразу оговорюсь, что не спешите мне давать ссылки на переменную SelectionStart, поскольку она не всегда полезна. Например, когда у нас в TextBoxнет выделенной части, то местоположение каретки безусловно можно определить по SelectionStart, но когда у нас имеется выделенная часть, которая получена при помощи комбинации Shift+Right, то никаким образом местоположение каретки выявить SelectionStart'ом нельзя, ибо она переместилась вправо.

Вообще, после небольшого эксперимента я выявил, что SelectionStart указывает на начало выделенной части и не служит указателем на местоположение каретки.

Возможно, кто-то из Вас сталкивался с подобной проблемой.
Подскажите, как быть и как можно решить вопрос?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2017, 19:53
Ответы с готовыми решениями:

TextBox Отмена перемещения каретки
Необходимо при нажатии клавиши Up переместить каретку в конец строки в TextBox-e. private void...

Сдвиг каретки ввода в TextBox
пытаюсь создать свой TextBox, в котором можно изменять цвет границ using System; using...

Определить положение каретки в TextBox
Как определить положение каретки в ТекстБоксе? Дело в том, что мне нужно выставлять число в...

Изменение вида каретки в textbox
Приветствую всех. Есть ли возможность изменить вид каретки в TextBox? Хочу чтобы он была не...

1
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
28.10.2017, 21:06 2
Лучший ответ Сообщение было отмечено marckelalex как решение

Решение

Если считать, что каретка находится всегда в конце выделенной области, то можно так:
C#
1
2
3
4
5
6
        private int GetCarretPos()
        {
            if (textBox1.SelectionLength > 0)
                return textBox1.SelectionStart + textBox1.SelectionLength;
            return textBox1.SelectionStart;
        }
Правда, в этом случае не учитывается, что выделение может быть сделано справа налево. Т.е. фактически каретка будет в положении SelectionStart, но код укажет другое положение.
Если выделением можно пренебречь, то можно сначала снять выделение, а потом узнать положение каретки по SelectionStart. Хотя, в этом случае, SelectionStart будет перемещено в начало выделенной области, что опять же будет неверным результатом, если выделение производилось слева направо.
Если же эти способы не подходят и необходимо определять положение с учетом того в какую сторону производилось выделение, нужно уже как то мудрить...
1
28.10.2017, 21:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2017, 21:06
Помогаю со студенческими работами здесь

Определение координат каретки в TextBox
Как получить Point, ктр соответствует координатам каретки на окне или на самом компоненте TextBox....

Перевод каретки и табуляция в TextBox программно
Не могу найти операторы для форматирования текста в TextBox. Например, существует ли возможность...

Получить char слева или справа от каретки в TextBox
Привет всем интересующимся, Не пойму, как можно получить символ, стоящий слева или справа от...

определить местоположение
Скажите пожалуйста, Возможно ли в скрипте узнать id дива из которого скрипт был вызван? Мне это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru