С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/35: Рейтинг темы: голосов - 35, средняя оценка - 4.86
7 / 7 / 0
Регистрация: 13.09.2012
Сообщений: 94

RichTextBox поведение Scrollbar как в обычном textBox

18.01.2014, 09:03. Показов 6514. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть RichTextBox, при добавлении туда текста посредством
C#
1
richTextBox1.AppendText("Многобукв");
Ползунок (Scrollbar) всегда стоит на месте, как сделать, чтобы при добавлении нового текста он сам опускался вниз. По аналогии с логом. При применении обычного textBox все работает как надо, но нужно использовать именно RichTextBox
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2014, 09:03
Ответы с готовыми решениями:

Как синхронизировать ScrollBar(ы) у двух richTextBox в WPF
Подскажите как синхронизировать ScrollBar(ы) у двух richTextBox в WPF, чтоб у одного richTextBox когда передвигаешь бегунок то и в другом ...

Как связать textbox и scrollbar
Чтобы при прокрутке scrollbar в textbox прокручивался текст, короче как в microsoft word?

Как связать между собой TextBox и ScrollBar?
У меня в задании значение рентабельности должно отображаться с помощью Scrollbar и текстового поля. Я связала по аналогии с примером так: ...

12
Си-решеточник
 Аватар для Rameron
141 / 135 / 60
Регистрация: 07.02.2011
Сообщений: 669
18.01.2014, 11:31
Если я правильно понял, то:
C#
1
2
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.ScrollToCaret();
Выполнять после добавления текста.
1
7 / 7 / 0
Регистрация: 13.09.2012
Сообщений: 94
18.01.2014, 11:46  [ТС]
Пробовал, не до конца пролистывает вниз. Решил так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
[DllImport("User32.dll", CharSet = CharSet.Auto, EntryPoint = "SendMessage")]
        static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
 
        const int WM_VSCROLL = 277;
        const int SB_BOTTOM = 7;
 
        private void ScrollToEnd(RichTextBox rtb)
        {
            IntPtr ptrWparam = new IntPtr(SB_BOTTOM);
            IntPtr ptrLparam = new IntPtr(0);
            SendMessage(rtb.Handle, WM_VSCROLL, ptrWparam, ptrLparam);
        }
После добавления текста выполнять:
C#
1
ScrollToEnd(richTextBox1);
Вдруг кому ещё понадобится.
0
5 / 5 / 3
Регистрация: 09.02.2014
Сообщений: 58
22.04.2014, 12:09
Добрый день,

у меня на оборот проблема в том что при добавлении текста через
C#
1
 richTextBox1.AppendText(msg + Environment.NewLine);
Scrollbar всегда двигается в низ.
Как можно это на время отключать,для того что бы просмотреть весь лог?
Можно "на пальцах" так как с WINAPI (думаю для этого она нужна) еще не дружу

Спасибо
0
Си-решеточник
 Аватар для Rameron
141 / 135 / 60
Регистрация: 07.02.2011
Сообщений: 669
22.04.2014, 12:13
Цитата Сообщение от gerrus Посмотреть сообщение
с WINAPI (думаю для этого она нужна)
Нужна
Вот, почитайте: Disabling RichTextBox autoscroll
1
5 / 5 / 3
Регистрация: 09.02.2014
Сообщений: 58
22.04.2014, 15:05
Цитата Сообщение от Rameron Посмотреть сообщение
Нужна
Вот, почитайте: Disabling RichTextBox autoscroll
спасибо,
к сожалению мой знания еще малы что бы разобраться что к чему.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 public partial class View : Form
    {
        
        private const UInt32 SB_TOP = 0x6;
        private const UInt32 WM_VSCROLL = 0x115;
 
        [return: MarshalAs(UnmanagedType.Bool)]
        [DllImport("user32.dll", SetLastError = true)]
        private static extern bool PostMessage(IntPtr hWnd, UInt32 Msg,
            IntPtr wParam, IntPtr lParam);
 
        
        public View(Window_Chat cont)
        {
            InitializeComponent();
            
            richTextBox1.VScroll += HandleRichTextBoxAdjustScroll;
            richTextBox1.TextChanged += HandleRichTextBoxAdjustScroll;
 
            
        }
 
        private void HandleRichTextBoxAdjustScroll(Object sender,
     EventArgs e)
        {
            PostMessage(handle, WM_VSCROLL, (IntPtr)SB_TOP, IntPtr.Zero);
        }
 
        public void Loggen(string  msg,Color color)
        {
            richTextBox1.SelectionColor = color;
            richTextBox1.AppendText(msg + Environment.NewLine);
 
            
        }
 
      
    
   
 
 
 
        }

как например узнать handle от этой формы и что мне делать
C#
1
2
HandleRichTextBoxAdjustScroll(Object sender,
     EventArgs e)
? когда и как вызывать?
может кто подскажет?
П.С: код это как бы псевдокод

Добавлено через 31 минуту
handle вроде как бы нашел,но все равно идет скроль в низ.
C#
1
PostMessage(FindWindow(this.Text), WM_VSCROLL, (IntPtr)SB_TOP, IntPtr.Zero);
C#
1
2
3
4
5
6
7
8
private IntPtr FindWindow(string title)
{
    Process proc = (from p in Process.GetProcesses()
                    where p.MainWindowTitle == title
                    select p).FirstOrDefault();
 
    return  proc.MainWindowHandle;
}
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
22.04.2014, 15:12
Handle не главного окна, а самого RichTextBox имеется в виду, т.е. RichTextBox.Handle
1
5 / 5 / 3
Регистрация: 09.02.2014
Сообщений: 58
22.04.2014, 16:44
Спасибо ,получилось.
Только не так как было задумано
теперь он скролл всегда вверх идет.
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
22.04.2014, 16:46
Ну в общем-то эту команду ему и посылаете... SB_TOP, соответственно константу поменяете, будет иначе...
0
5 / 5 / 3
Регистрация: 09.02.2014
Сообщений: 58
22.04.2014, 16:58
Хотелось бы scrolling остановить совсем.что бы можно было самому туда сюда листать,в то время как лог все равно пополнялся бы дальше.
может поток остановить на время, а потом всё одним разом вписывать в richtextbox?
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
22.04.2014, 17:09
Дешевле скрыть RichTextBox.
0
5 / 5 / 3
Регистрация: 09.02.2014
Сообщений: 58
25.04.2014, 09:00
Цитата Сообщение от Spawn Посмотреть сообщение
Дешевле скрыть RichTextBox.
Вы имеете ввиду
C#
1
control.Enabled= false;
?
или что мне подразумевать под "скрыть richtextbox"?
дело в том что strings поступают дальше ,в то время как мне хотелось бы поискать нужную мне инфо в самом боксе , без постоянного прыгания вверх или вниз.
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
25.04.2014, 09:54
Вот эту статью почитайте, Ваш случай.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.04.2014, 09:54
Помогаю со студенческими работами здесь

Как сделать взаимосвязь между ScrollBar и TextBox на форме
Всем привет Как сделать взаимосвязь между ScrollBar1 и TextBox1 на форме. Во время макроса TextBox заполняется текстом, и в один момент...

Сделать возможным перенос строк в TextBox. Или сделать, чтобы RichTextBox отображал текст неформатированным (как TextBox)
Вот хотел узнать, как сделать так, чтобы RichTextBox отображал текст не форматированным? Или как сделать, чтобы в TextBox при нажатии...

Работа со значением ScrollBar в RichTextBox
Привет всем, можно ли работать со значением ползунка scrollbar в RichTextBox, к примеру: изменить ему значение при запуске формы. Просто...

Как игнорировать TAB в RichTextBox и в TextBox?
Товарищи помогите пожалуста. У меня в моей программе при неборе текста и в RichTextBox и в TextBox при нажатии на ТАВ фокус перемещается с...

Как из RichTextBox вывести определенную строку в TextBox
как из него вывести определенную строку в textbox?? пытаюсь так textBox2.Text = richTextBox1.Lines; ошибка textBox2.Text =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru