ユーザーインターフェイスに読み取り専用のRichTextBoxがあります。マウスでテキストの行をクリックすると、その行全体が選択または強調表示されるようにしたいと思います。クリックされたその1行だけ。
これはどうやるんですか?
ユーザーインターフェイスに読み取り専用のRichTextBoxがあります。マウスでテキストの行をクリックすると、その行全体が選択または強調表示されるようにしたいと思います。クリックされたその1行だけ。
これはどうやるんですか?
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
クリックイベントハンドラーで次のコードを使用するだけです
SendKeys.Send("{HOME}+{END}")