To control the ScrollBar, you can use API functions:
//ΡΠΈΠΏΡ 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); }
Documentation: