Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> richTextBox 
:(
    Опции темы
reg24r
Дата 10.9.2006, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 19.5.2006

Репутация: нет
Всего: нет



Здесь написано много о richTextBox.
Но не нашел как определить индекс выбранной строки и как выделить фон этой строки?
PM MAIL   Вверх
mr.DUDA
Дата 10.9.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Да проще простого: берём значение SelectionStart, конвертируем в номер первой выделенной строки методом GetGetLineFromCharIndex, получаем последний выделенный символ из SelectionStart + SelectionLength, конвертируем в номер строки тем же методом что и выше, выделяем полученные строки, изменяя SelectionStart и SelectionLength (для обратного перевода из номера строки в номер символа используем GetFirstCharIndexFromLine), и наконец изменяем фон выделения с пом. свойства SelectionBackColor; возвращаем выделение на место.

Получится что-то вроде этого (только очень примитивно):
Код
using System;
using System.Windows.Forms;
using System.Drawing;

namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        bool isHandlingSelectionChange = false;
        int iPrevSelStart = -1;
        int iPrevSelLength = -1;

        private void richTextBox1_SelectionChanged(object sender, EventArgs e)
        {
            if (isHandlingSelectionChange) return;
            isHandlingSelectionChange = true;

            int selStart = richTextBox1.SelectionStart, selLen = richTextBox1.SelectionLength;
            try
            {
                if (iPrevSelStart != -1)
                {
                    richTextBox1.SelectionStart = iPrevSelStart;
                    richTextBox1.SelectionLength = iPrevSelLength;
                    richTextBox1.SelectionBackColor = Color.White;
                }

                int iFirstSelLine = richTextBox1.GetLineFromCharIndex(selStart);
                int iLastSelLine = richTextBox1.GetLineFromCharIndex(selStart + selLen);

                int iFirstSelChar = richTextBox1.GetFirstCharIndexFromLine(iFirstSelLine);
                int iLastSelChar = richTextBox1.GetFirstCharIndexFromLine(iLastSelLine + 1);
                if (iLastSelChar == -1) iLastSelChar = richTextBox1.TextLength;

                richTextBox1.SelectionStart = iFirstSelChar;
                richTextBox1.SelectionLength = iLastSelChar - iFirstSelChar;
                iPrevSelStart = richTextBox1.SelectionStart;
                iPrevSelLength = richTextBox1.SelectionLength;

                richTextBox1.SelectionBackColor = Color.Yellow;
            }
            finally
            {
                richTextBox1.SelectionStart = selStart;
                richTextBox1.SelectionLength = selLen;
                isHandlingSelectionChange = false;
            }
        }
    }
}



--------------------
user posted image
PM MAIL WWW   Вверх
reg24r
Дата 13.9.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 19.5.2006

Репутация: нет
Всего: нет



Действительно просто smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.