Авто-прокрутка вниз в RichTextBox
Категория: .NET
2011-10-04 16:43:15
Добавляется текст в конец файла и содержимое файла выводится в richTextBox. Как сделать авто-прокрутку, чтобы отображались последние добавленные данные?
code: #csharp
public class MyForm:.... { ....... protected delegate void LogMessageDelegate(string message); private const int WM_VSCROLL = 0x115; private const int SB_BOTTOM = 7; protected struct POINTAPI { public int x; public int y; } [DllImport( "user32.dll", EntryPoint="SendMessageA")] private static extern int ExternSendMessage(IntPtr handle, int msg, int wParam, int lParam); private void ScrollToEnd(IntPtr handle) { ExternSendMessage(handle, WM_VSCROLL, SB_BOTTOM, 0); } private void LogMessage(string message) { if (!this.InvokeRequired) { LogTextBox.AppendText(message); try { if (!LogTextBox.Focused) { ScrollToEnd(LogTextBox.Handle); } } catch {} } else { this.BeginInvoke(new LogMessageDelegate(this.LogMessage), new object[] {message}); } } }
Можно использовать метод Select(int, int) класса TextBoxBase (родителя RichTextBox и TextBox), передавая первым параметром индекс символа, перед которым нужно установить курсор, а вторым передавать 0. Но, чтобы метод сработал, control должен иметь фокус перед вызовом Select. Например, при клике на кнопку нужно перевести фокус на позицию символа с индексом 5:
code: #csharp
textBox.Focus(); textBox.Select(5, 0); textBox.ScrollToCaret();
автор: mik-a-el
Поделиться: