Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2009, 21:35   #1
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
Вопрос выделение j-ой строки в RichTextBox

есть RichTextBox
в нём есть текст из i строк
есть переменная int J в которой хранится номер строки которую нужно выделить
второй час сижу и думаю алгоритм выделения этой строки.
может кто-нибудь подскажет суть такого алгоритма?

UPD:
сделал так, но текст не выделяется
Код:
RichTextBox1.Select(RichTextBox1.GetFirstCharIndexFromLine(J), RichTextBox1.Lines.Length);
UPD:
Вот работающий вариант. Если вывести SelectedText через MessageBox, то выводится нужна строка, но... визуально в самом RichTextBox'e этого не видно. Подскажите что не так:
Код:
                int i, n, p1, p2;
                int ln = RichTextBox1.Text.Length;  
                p1 = ln;
                p2 = ln;
                for(i=0; i<ln;i++)
                {
                    n = RichTextBox1.GetLineFromCharIndex(i);
                    if((n==ErrorLine) && (p1 == ln)) {p1=i;}
                    if(n>ErrorLine) {p2 = i; break;}
                }
                RichTextBox1.Select(p1,p2-p1);
                RichTextBox1.Focus();
не молчите подскажите
Life if about choices
Make the right choice

Последний раз редактировалось TaTT DoGG; 07.03.2009 в 21:19.
TaTT DoGG вне форума Ответить с цитированием
Старый 08.03.2009, 00:00   #2
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

не сочтите за наглость, но без решения этой проблемы, не могу работать дальше
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 08.03.2009, 12:35   #3
Vitek-pm
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 56
По умолчанию

Дело в том, что выделение-то у тебя работает, просто визуально это не видно. Смысл выделения для ричтекстбокса не в том, что у тебя строка нужная подсветится или ещё что, а в том, что ты выбираешь текст, с которым что-нибудь потом можешь делать. Можешь, например, изменить шрифт выделенного текста. Вот работающий кусок кода:

Код:
richTextBox1->Select(10,20);
richTextBox1->SelectionFont = gcnew System::Drawing::Font(FontFamily::GenericSansSerif,20.0F,FontStyle::Bold);
richTextBox1->Refresh();
Писано в Visual C++

Последний раз редактировалось Vitek-pm; 08.03.2009 в 12:37.
Vitek-pm вне форума Ответить с цитированием
Старый 08.03.2009, 12:46   #4
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Vitek-pm Посмотреть сообщение
Дело в том, что выделение-то у тебя работает, просто визуально это не видно. Смысл выделения для ричтекстбокса не в том, что у тебя строка нужная подсветится или ещё что, а в том, что ты выбираешь текст, с которым что-нибудь потом можешь делать. Можешь, например, изменить шрифт выделенного текста. Вот работающий кусок кода:

Код:
richTextBox1->Select(10,20);
richTextBox1->SelectionFont = gcnew System::Drawing::Font(FontFamily::GenericSansSerif,20.0F,FontStyle::Bold);
richTextBox1->Refresh();
Писано в Visual C++
вот на C# перевёл
Код:
richTextBox1.Select(10,20); //это у меня есть
richTextBox1.SelectionFont = new Font("GenericSansSerif",20,FontStyle.Bold); //это мне не нужно, т.к. выделять жирным мне на надо... мне нужно обычным выделением сделать, т.е. как ты в ворде выделяешь определенный фрагмент текста мышой
richTextBox1.Refresh(); //не пробовал, вечером отпишусь, может это поможет
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 08.03.2009, 13:20   #5
Vitek-pm
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 56
По умолчанию

Если никаких изменений с текстом, то выделение не заметно. Обычное выделение, как я понимаю, это черный фон и белый текст... Вот, сделал как в ворде :-)

Код:
				 richTextBox1->Select(10,20);
				 richTextBox1->SelectionBackColor=Color::Black;
				 richTextBox1->SelectionColor=Color::White;
				 richTextBox1->Refresh();
З.Ы: Кстати, безе рефреша тоже работает...

Последний раз редактировалось Vitek-pm; 08.03.2009 в 13:26.
Vitek-pm вне форума Ответить с цитированием
Старый 08.03.2009, 13:32   #6
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

есть ещё одна фича
дело в том, что у меня не совсем richtextbox )
у меня richtextbox с подсветкой слов, которые я задал через конструктор...
я создал апликэйшн с обычным richtextbox'ом и на кнопку назначил вот что:
richtextbox1.selct(0,3);
richtextbox1.focus();

так вот при нажатии на кнопку текст выделялся, как мне надо...
тоже самое с SyntaxRichTextBox не пашет
хотя... до этого я как то делал с этим srichtextbox'ом то что мне нужно сейчас...
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 08.03.2009, 14:34   #7
Vitek-pm
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 56
По умолчанию

SyntaxRichTextBox - это компонент такой? У себя в студии я его не нашел... Плюс немного перестал понимать суть проблемы...

Последний раз редактировалось Vitek-pm; 08.03.2009 в 14:44.
Vitek-pm вне форума Ответить с цитированием
Старый 08.03.2009, 14:50   #8
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

это не стандартный компонент... он добавлен у меня в проект
суть проблемы такова.
у меня выглядит так:


а нужно чтобы выглядело так:


а вообще было бы хорошо, если бы не выделяло, а подчёркивало волнистой линией, как в ворде ошибки
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 08.03.2009, 15:07   #9
Vitek-pm
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 56
По умолчанию

А установка свойства richTextBox1->SelectionBackColor в голубой цвет разве не решит твою проблему? Насчет волнистой линии подумаю...
Vitek-pm вне форума Ответить с цитированием
Старый 08.03.2009, 15:31   #10
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

может дравить её прямо на компоненте?
правда, таким я ещё не занимался
в C#
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выделение чмсел из строки belikk Microsoft Office Excel 5 19.11.2008 17:15
CheckListBox Програмное выделение строки Yuran Общие вопросы Delphi 3 01.08.2008 15:44
Выделение слов из строки // Pascal Rifler Паскаль, Turbo Pascal, PascalABC.NET 4 02.07.2008 08:22
Выделение строки (canvas) в StringGrid elfo Помощь студентам 1 24.06.2008 12:12
Выделение одной строки из двух одинаковых REMove Microsoft Office Excel 2 15.12.2007 16:03