Как переместить полосу прокрутки вверх на одну строку? (В C # RichTextBox) - PullRequest
4 голосов
/ 15 октября 2008

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

Ответы [ 4 ]

11 голосов
/ 15 октября 2008

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

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));

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

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

1 голос
/ 16 октября 2008

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

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

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

Это прокрутит эту строку до вершины элемента управления редактирования.

0 голосов
/ 15 октября 2008

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

0 голосов
/ 15 октября 2008

window.scrollBy (0,20);

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

...