В C# есть TextBox с включенным свойством multyline.
1.Как определить для курсора номер строки, в котором он находится и положение в этой строке?
2.Изменение положения курсора я определяю, обрабатывая события MouseDown и KeyDown. Можно ли это сделать как-то проще?
(пытаюсь добиться такого же поведения у строки состояния, как у стандартного виндовского Notepad-а)
Буду очень благодарен за помощь...
07.09.05 17:28: Перенесено из '.NET'
Однако удивлен, что нет простого способа определить координаты курсора в multiline текстбоксе. А также нету события вроде SelectionChanged или CaretPositionChanged. Может, я что-то пропустил?

--------------------------------
С уважением, Дмитрий.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
по ссылке лень пройти чтоли ?
Вопрос
Как определить позицию каретки ввода в TextBox/RichTextBox?
Ответ
Используйте свойство TextBoxBase.SelectionStart
СaretPositionChanged = TextChanged
"эх женщины-женщины... понаражают сами себя
а нам потом расхлёбывать.."
(КВН ЛУНа)
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
по ссылке лень пройти чтоли ?
Вовсе нет. И про SelectionStart мне известно. Но это всего лишь смещение выделенного текста. А координаты курсора в мультилайновом тестбоксе — это X, Y. Можно узнать, как из первого получить второе? Делать раскладку текста с учетом переноса слов?
СaretPositionChanged = TextChanged
Да ну? При перемещении курсора ввода срабатывает TextChanged?
--------------------------------
С уважением, Дмитрий.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Уточню: X, Y в данном контексте — столбец и строка, ну, в общем, то же, что хотел найти топикстартер. Может, вы меня неправильно поняли, но я специально искал такой топик, будучи уверен, что на готдотнете об этом уже наверняка спрашивали.
--------------------------------
С уважением, Дмитрий.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Я нашел такой способ. Работает на RichTextBox точно. На TextBox не проверял, но должно тоже работать.
Обработчик события SelectionChanged для RichTextBox richTextBox1
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
Point pntCursorPosition = new Point();
pntCursorPosition.X = richTextBox1.GetLineFromCharIndex(richTextBox1.SelectionStart);
pntCursorPosition.Y=richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexOfCurrentLine();
}
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение