【发布时间】:2015-07-29 19:23:36
【问题描述】:
我的用户界面中有一个只读的 RichTextBox。我想这样做,以便当我用鼠标单击一行文本时,它会选择或突出显示整行。只是被点击的那一行。
你是怎么做到的?
【问题讨论】:
标签: vb.net richtextbox
我的用户界面中有一个只读的 RichTextBox。我想这样做,以便当我用鼠标单击一行文本时,它会选择或突出显示整行。只是被点击的那一行。
你是怎么做到的?
【问题讨论】:
标签: vb.net richtextbox
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)
然后你需要找出它的结束位置,也就是下一行的开始减一:
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}")
【讨论】: