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 关注的控件名称。
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 关注的控件名称。