Как 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);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы