Выбор текстового блока C# RichTextBox

Кто-нибудь расширил элемент управления .NET RichBextBox, чтобы иметь возможность выбирать текст с помощью «выбора блока»? Если да, не могли бы вы поделиться своим кодом?


person Lenard    schedule 13.07.2009    source источник
comment
Уточнение выбора блока в вашей ситуации может дать лучший ответ.   -  person Brad Bruce    schedule 14.07.2009
comment
OK. В настоящее время, когда вы выбираете текст с помощью мыши, он выделяет текст построчно. В блочном режиме вы сможете выбирать текст по столбцу... как если бы вы выбирали прямоугольник текста из элемента управления.   -  person Lenard    schedule 14.07.2009
comment
Но RichTextBox может иметь разные шрифты разных размеров по всему текстовому файлу. Если вы выбираете столбцы 3-10 в строке 1, что следует выбрать в строке 2? Колонки 3-10? Или столбцы, которые совпадают с X, Y, шириной столбцов 3-10 из строки 1? Что, если половина символа находится в этой границе? Выбирается ли он? Это непростая проблема в элементе управления RichTextBox.   -  person scwagner    schedule 14.07.2009
comment
Scwagner, Точка взята. Я больше думал с точки зрения символа = столбца. В моем случае я использую шрифт с фиксированным шагом и одинаковым размером шрифта во всем документе. Конечно, если вы измените размер шрифта в некоторых местах, он не будет выглядеть как идеальный прямоугольник при выделении текста, но в моем senario такого никогда не будет.   -  person Lenard    schedule 14.07.2009
comment
Привет, Ленард, я нашел твой пост, когда искал ту же возможность. Вы нашли решение? Спасибо, Боб   -  person    schedule 17.10.2009
comment
Нет, я этого не сделал. Я решил пока воздержаться от этой возможности. Я могу посмотреть на то, что предложил kek444, но у меня нет времени (или желания) заниматься этим самому. Тем не менее, если я найду что-то в будущем, я поделюсь этим здесь.   -  person Lenard    schedule 21.10.2009


Ответы (1)


Насколько мне известно, единственный способ сделать это — использовать SendMessage из API, используя EM_CHARFROMPOS.

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

person Kenan E. K.    schedule 13.07.2009