VB.net,能够 select 在富文本框中输入文本而不会失去焦点?

VB.net, Being able to select text in a richtextbox without losing focus?

VB.net .. 目前我有两个控件,一个 richtextbox 和一个文本框。 RTB 是只读的,并且 HideSelection 也设置为 false。

文本框是通用的,它允许输入(发送数据)。


我希望能够 select richtextbox 中的内容而不丢失文本框中的焦点。有一个名为 'mushclient' 的客户端可以执行此操作,并且效果很好。文本仍然是 selected,但不会失去对聊天栏的关注以输入。

不过我不太清楚如何防止 'focus'。目前,当您在游戏中但想要复制某些内容时,它会中断流程,您必须再次单击文本框才能再次开始输入。我知道我可以在单击 RTB 后设置焦点,但这总体上感觉有点奇怪。我想知道是否有更优雅的解决方案。

谢谢!

这似乎很适合我。 TextBox 确实失去了焦点,但是一旦 Mouse_UP 事件触发,所选文本就会被复制到剪贴板并且焦点会被发送回文本框。

Public Class Form1
    Dim LostFocusControl As Control

    Private Sub RichTextBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles RichTextBox1.MouseUp
        If RichTextBox1.SelectedText.Length > 0 Then
            Clipboard.SetText(RichTextBox1.SelectedText)
        End If
        If Not IsNothing(LostFocusControl) Then
            LostFocusControl.Focus()
        End If
    End Sub

    Private Sub ControlLostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
        LostFocusControl = Sender
    End Sub
End Class

代码比它可能的要长一些,但是如果您以后想要更改 return 焦点所在的控件,这会使它变得更容易。要更改您想要 return 关注的控件,只需更改处理程序订阅的控件的名称,例如

改变

    Private Sub ControlLostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus

    Private Sub ControlLostFocus(sender As Object, e As EventArgs) Handles Listbox1.LostFocus

或者您想要 return 关注的控件名称。