Как переместить полосу прокрутки вверх на одну строку?(В C# RichTextBox)

StackOverflow https://stackoverflow.com/questions/205794

  •  03-07-2019
  •  | 
  •  

Вопрос

Для моего C # RichTextBox я хочу программно сделать то же самое, что щелкнуть стрелку вверх в верхней части вертикальной полосы прокрутки, которая перемещает отображение RichTextBox вверх на одну строку.Каков код для этого?Спасибо!

Это было полезно?

Решение

Вот что я делаю:

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint wMsg, 
                               UIntPtr wParam, IntPtr lParam);

тогда звони:

SendMessage(myRichTextBox.Handle, (uint)0x00B6, (UIntPtr)0, (IntPtr)(-1));

Кажется, работает нормально - возможно, вам все же придется немного подправить.

Надеюсь, это поможет.

Другие советы

Для дальнейшего использования сообщение EM_LINESCROLL - это то, что вы отправляете любому многострочному элементу управления редактированием для установки положения прокрутки.Вы можете прокручивать по вертикали или горизонтали.Видишь MSDN за подробностями.

Вы также можете использовать метод расширенного редактирования, где вы устанавливаете индекс символа (который вы можете получить с помощью EM_LINEINDEX), затем вызываете RichEdit .ScrollToCaret ie:

RichEdit.SelectionStart = SendMessage(RichEdit.Handle, EM_LINEINDEX, ScrollTo, 0);
RichEdit.ScrollToCaret();

Это позволит прокрутить эту строку до верхней части элемента управления редактированием.

окно.прокрутка (0,20);

Это приведет к прокрутке окна.20 - это приблизительное значение, которое я использовал в прошлом и которое обычно равно одной строке...но, конечно, размер шрифта может повлиять на то, насколько далеко на самом деле находится одна строка.

Если вы можете получить элемент управления прокруткой для расширенного текстового поля, вы должны быть в состоянии получить его свойство SmallChange и использовать его для прокрутки текста.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top