Для управления ScrollBar можно использовать API функции:
//типы ScrollBar-ов
private const int SB_HORZ = 0x0;
private const int SB_VERT = 0x1;
//WM - сообщения
private const int WM_HSCROLL = 0x114;
private const int WM_VSCROLL = 0x115;
//Комманды для ScrollBar-а
private const int SB_THUMBPOSITION = 4;
//Получении позиции
//Возвращает насколько я понял верхнюю видимую строку TextBox-а
//nBar = тип ScrollBar
[DllImport("user32.dll")]
private static extern int GetScrollPos(IntPtr hWnd, int nBar);
//Установка позиции бегунка на ScrollBar-е
//nBar = тип ScrollBar
//nPos = строка
[DllImport("user32.dll")]
private static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);
//PostMessage, необходима для установки позиции в TextBox-е
[DllImport("user32.dll")]
private static extern bool PostMessageA(IntPtr hWnd, int nBar, int wParam, int lParam);
//Пример
private void test()
{
//Получаем актуальную позицию ScrollBar-а TextBox-а
int originalLine = GetScrollPos(textBox1.Handle, SB_VERT);
//Ставим бегунок ScrollBar-a, будто верхняя видимая строка у нас восьмая
SetScrollPos(textBox1.Handle, SB_VERT, 8, true);
//Прокручиваем TextBox к восьмой строке
PostMessageA(textBox1.Handle, WM_VSCROLL, SB_THUMBPOSITION + 0x10000 * 8, 0);
}
Документация: