Проверка прокручен ли скролл richTextBox до конца

155
21 марта 2019, 11:40

Моя задача такова, когда пользователь прокрутит скролл до конца текста выполняется нужный мне код. Но сколько не искал, не смог найти способа проверки положения скролла.

Как это можно реализовать?

Answer 1

Вот такой есть вариант получить информацию о положении скролла и его параметрах (дальше думаю сами разберетесь).Главное разобраться со структурой SCROLLINFO. Для этого прилагаю ссылки
описание MSDN структуры SCROLLINFO

GetScrollInfo MSDN

То же на русском

    [DllImport("user32.dll")]
    private static extern bool GetScrollInfo(IntPtr hWnd, int nBar, ref SCROLLINFO ScrollInfo);
    [StructLayout(LayoutKind.Sequential)]
    public struct SCROLLINFO
    {
        public int cbSize;
        public int fMask;
        public int nMin;
        public int nMax;
        public int nPage;
        public int nPos;
        public int nTrackPos;
    }
    public enum ScrollBarType : uint
    {
        SbHorz = 0,
        SbVert = 1,
        SbCtl = 2,
        SbBoth = 3
    }
    private const int SB_VERT = 0x1;
    private const int SB_HORZ = 0x0;
    private const int SIF_PAGE = 0x2;
    private const int SIF_POS = 0x4;
    private const int SIF_RANGE = 0x1;
    private const int SIF_TRACKPOS = 0x10;
    private const int SIF_ALL = (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS);
    private void richTextBox1_VScroll(object sender, EventArgs e)
    {
        SCROLLINFO si = new SCROLLINFO();
        si.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(si);
        si.fMask = SIF_ALL;
        GetScrollInfo(richTextBox1.Handle, (int)ScrollBarType.SbVert, ref si);
        textBox1.Text = si.nPos.ToString();
        textBox2.Text = si.nMax.ToString();
        textBox3.Text = si.nPage.ToString();
    }

READ ALSO
Не работает функция отсчета таймера

Не работает функция отсчета таймера

Мне нужно в 2 lebl'а парсить минуты и секунды соответсвенноВот функция которую я сделал:

162
Как получить Id у User.Identity.Name?

Как получить Id у User.Identity.Name?

Собственно вопрос в заголовке

161
Тип не помечен как сериализуемый

Тип не помечен как сериализуемый

Нужно создать компонент для нужд проектаВот максимально упрощённый код:

172