スクロールバーを1行上に移動する方法は? (C#RichTextBoxの場合)

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

  •  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プロパティを取得し、それを使用してテキストをスクロールできるはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top