VB.net,能够在不失去焦点的情况下选择richtextbox中的文本吗?

时间:2016-05-03 14:50:41

标签: vb.net textbox richtextbox

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

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

我希望能够在richtextbox中选择内容,而不会在文本框中失去焦点。有一个名为'mushclient'的客户端可以做到这一点,而且效果非常好。文本仍处于选中状态,但它不会失去对聊天栏的关注以进行输入。

但我并不确切知道如何防止'焦点'。当你在游戏中但它想要复制某些内容时,它会打破流程,你必须再次单击文本框才能再次开始输入。我知道我可以在点击RTB之后设置焦点,但这感觉整体有点奇怪。我想知道是否有更优雅的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:1)

这似乎对我有用。 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

代码有点长,但是如果稍后你想要更改返回焦点的控件,这会更容易。要更改要返回焦点的控件,只需更改处理程序订阅的控件的名称,例如

更改

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

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

或控件的任何名称是您想要将焦点返回到。