0

ユーザーインターフェイスに読み取り専用のRichTextBoxがあります。マウスでテキストの行をクリックすると、その行全体が選択または強調表示されるようにしたいと思います。クリックされたその1行だけ。

これはどうやるんですか?

4

2 に答える 2

3

RichTextBoxには必要なすべてのメソッドがあり、必要なのは複数のメソッドだけです。まず、マウスの位置を文字インデックスにマップする必要があります。

Private Sub RichTextBox1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
    Dim box = DirectCast(sender, RichTextBox)
    Dim index = box.GetCharIndexFromPosition(e.Location)

次に、文字インデックスを行にマップする必要があります。

    Dim line = box.GetLineFromCharIndex(index)

次に、行がどこから始まるかを見つける必要があります。

    Dim lineStart = box.GetFirstCharIndexFromLine(line)

次に、それがどこで終了するかを見つける必要があります。これは、次の行の開始から1を引いたものです。

    Dim lineEnd = box.GetFirstCharIndexFromLine(line + 1) - 1

次に、選択を行う必要があります。

    box.SelectionStart = lineStart
    box.SelectionLength = lineEnd - lineStart

要約:

Private Sub RichTextBox1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles RichTextBox1.MouseDown
    Dim box = DirectCast(sender, RichTextBox)
    Dim index = box.GetCharIndexFromPosition(e.Location)
    Dim line = box.GetLineFromCharIndex(index)
    Dim lineStart = box.GetFirstCharIndexFromLine(line)
    Dim lineEnd = box.GetFirstCharIndexFromLine(line + 1) - 1
    box.SelectionStart = lineStart
    box.SelectionLength = lineEnd - lineStart
End Sub
于 2012-05-24T23:18:40.877 に答える
0

クリックイベントハンドラーで次のコードを使用するだけです

SendKeys.Send("{HOME}+{END}")
于 2012-05-24T22:42:08.113 に答える