スクロールバーを1行上に移動する方法は? (C#RichTextBoxの場合)
-
03-07-2019 - |
質問
C#RichTextBoxの場合、垂直スクロールバーの上部にある上矢印をクリックしてRichTextBoxの表示を1行上に移動するのと同じことをプログラムで行います。このコードは何ですか?ありがとう!
解決
ここに私がしていることを示します:
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint wMsg,
UIntPtr wParam, IntPtr lParam);
then call:
SendMessage(myRichTextBox.Handle, (uint)0x00B6, (UIntPtr)0, (IntPtr)(-1));
正常に動作しているようです-ただし、少し調整する必要があるかもしれません。
役立つこと。
他のヒント
今後の参照のために、EM_LINESCROLLメッセージは、スクロール位置を設定するために複数行編集コントロールに送信するものです。垂直または水平にスクロールできます。 詳細については、 MSDN をご覧ください。
Rich Edit Selectionメソッドを使用して、文字インデックス(EM_LINEINDEXで取得可能)を設定し、RichEdit.ScrollToCaretを呼び出すこともできます。例:
RichEdit.SelectionStart = SendMessage(RichEdit.Handle, EM_LINEINDEX, ScrollTo, 0);
RichEdit.ScrollToCaret();
これにより、その行が編集コントロールの上部にスクロールします。
window.scrollBy(0,20);
これはウィンドウをスクロールします。 20は、私が過去に使用したおおよその値であり、通常は1行に相当しますが、もちろんフォントサイズは、1行の実際の距離に影響する可能性があります。
リッチテキストボックスのスクロールコントロールを取得できる場合、そのSmallChangeプロパティを取得し、それを使用してテキストをスクロールできるはずです。
所属していません StackOverflow