2016-05-03 45 views
0

VB.net ..目前我有兩個控件,一個richtextbox和一個文本框。 RTB是隻讀的,並且HideSelection也設置爲false。VB.net,能夠選擇richtextbox中的文本而不會失去焦點?

該文本框是通用的,它允許輸入(發送數據)。


我希望能夠在richtextbox中選擇內容而不會丟失文本框中的焦點。有一個叫做'mushclient'的客戶可以做到這一點,它運行得非常好。該文本仍然被選中,但它不會失去焦點在聊天欄上輸入。

但是,我不完全知道如何防止'重點',但是。目前它在遊戲中破壞流程,但想要複製某些內容時,必須再次單擊該文本框才能重新開始輸入。我明白,點擊RTB後,我可以重點聚焦,但總體感覺有點奇怪。我想知道是否有更優雅的解決方案。

謝謝!

回答

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 

或任何名稱的控制是你想要返回焦點。