Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Синхронизировать два richTextBox (C#)

41K
24 августа 2008 года
ajaccio
2 / / 24.08.2008
На форме есть 2 richTextBox. Требуется сделать так, чтобы при прокрутке текста в одном richTextBox, во втором richTextBox также прокручивался текст и полосы прокрутки. Примерно как в программе WinMerge.
Еще одна деталь: в одном тексте мб 20 строк, а во втором 50. Значит, когда прокручивается текст во втором richTextBox, в первом тоже должны появится полосы прокрути, и текст должен "уехать" вверх, т.к. этих последних 30 строк нет.

Я новичек в C#, так что прошу объяснить популярно :) как все это можно сделать. А еще лучше сразу посмотреть на код.
41K
28 августа 2008 года
ajaccio
2 / / 24.08.2008
кое-как разобрался.
решение.

никаких комментариев, кому надо - разберутся

[DllImport("user32.dll")]
private static extern int GetScrollPos(IntPtr hwnd, int nBar);
[DllImport("user32.dll", EntryPoint = "PostMessageA")]
private static extern int PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);

int ScrollObj = 3;

private void richTextBoxA_VScroll(object sender, EventArgs e)
{
...
if (ScrollObj != 2)
{
ScrollObj = 1;
SyncObj(richTextBoxA, richTextBoxB, 1);
}
}

аналогично richTextBoxB_VScroll

private void SyncObj(RichTextBox Box1, RichTextBox Box2, int source)
{
if (source == 1)
{
source = GetScrollPos(Box1.Handle, 1);
PostMessage(Box2.Handle, 0x115, 4 + 0x10000 * source, 0);
}
if (source == 2)
{
source = GetScrollPos(Box2.Handle, 1);
PostMessage(Box1.Handle, 0x115, 4 + 0x10000 * source, 0);
}
}

private void richTextBoxA_MouseCaptureChanged(object sender, EventArgs e)
{
ScrollObj = 1;
}

правда этот код немного недоделан, но все же...
1.8K
05 сентября 2008 года
NextTime
217 / / 19.12.2007
Цитата: ajaccio
На форме есть 2 richTextBox. Требуется сделать так, чтобы при прокрутке текста в одном richTextBox, во втором richTextBox также прокручивался текст и полосы прокрутки. Примерно как в программе WinMerge.
Еще одна деталь: в одном тексте мб 20 строк, а во втором 50. Значит, когда прокручивается текст во втором richTextBox, в первом тоже должны появится полосы прокрути, и текст должен "уехать" вверх, т.к. этих последних 30 строк нет.

Я новичек в C#, так что прошу объяснить популярно :) как все это можно сделать. А еще лучше сразу посмотреть на код.



У меня подобный вопрос... Только я пишу на VB .Net. У меня есть текстовое поле, в котором моя программа ведет лог и мне необходимо сделать автопрокрутку....Как бы программа залогила одну строчку и поле прокрутилось на конец

5
05 сентября 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: NextTime
У меня есть текстовое поле, в котором моя программа ведет лог и мне необходимо сделать автопрокрутку....Как бы программа залогила одну строчку и поле прокрутилось на конец


 
Код:
richTextBox1.SelectionStart = richTextBox1.TextLength;
            richTextBox1.SelectionLength = 0;
            richTextBox1.SelectedText = your_text_here;
            richTextBox1.ScrollToCaret();
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог