Как scrollBar1 выполнить прокрутку формы? - C#
Формулировка задачи:
Как scrollBar1 выполнить прокрутку формы MainWindow или TextBox1?
Решение задачи: «Как scrollBar1 выполнить прокрутку формы?»
textual
Листинг программы
using System.Runtime.InteropServices; public partial class Form1 : Form { public Form1() { InitializeComponent(); this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; } //типы 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(int stroka) { //Получаем актуальную позицию ScrollBar-а TextBox-а int originalLine = GetScrollPos(textBox1.Handle, SB_VERT); //Ставим бегунок ScrollBar-a, // здесь не совсем понятно SetScrollPos(textBox1.Handle, SB_VERT, stroka, true); //Прокручиваем TextBox PostMessageA(textBox1.Handle, WM_VSCROLL, SB_THUMBPOSITION + 0x10000 * stroka, 0); } private void button1_Click(object sender, EventArgs e) { // ко второй строке test(2); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д