当光标滚动 richtextbox 时停止计时器
Stopping a timer when cursor is scrolling richtextbox
我正在使用当光标位于富文本框内时停止的计时器 1,因此我已经尝试了一些事件,例如鼠标进入、鼠标按下和获得焦点以停止计时器,但这些在以下情况下不起作用我正在滚动 richtextbox。
当光标位于 richtextbox 内时,哪个事件允许我滚动并保持计时器 1 关闭?
谢谢
似乎没有简单的 one-event 方法可以做到这一点。正如您所发现的,单击滚动条时没有 Enter
或 MouseEnter
事件。我认为以下应该做你想要的事情:
Private isScrollingRtb As Boolean = False
Private Sub RichTextBox1_Enter(sender As Object, e As EventArgs) Handles RichTextBox1.Enter
'The RTB received focus.
Timer1.Stop()
End Sub
Private Sub RichTextBox1_Leave(sender As Object, e As EventArgs) Handles RichTextBox1.Leave
'The RTB lost focus.
Timer1.Start()
End Sub
Private Sub RichTextBox1_VScroll(sender As Object, e As EventArgs) Handles RichTextBox1.VScroll
If Not ActiveControl Is RichTextBox1 Then
'The user scrolled the RTB while it did not have focus.
Timer1.Stop()
isScrollingRtb = True
End If
End Sub
Private Sub Form1_MouseEnter(sender As Object, e As EventArgs) Handles Me.MouseEnter
If isScrollingRtb Then
'The user left the RTB after scrolling it without focus.
Timer1.Start()
isScrollingRtb = False
End If
End Sub
当用户单击滚动条时,将引发 VScroll
事件,因此您可以 Stop
Timer
该事件。问题是决定何时再次 Start
它。在此示例中,我选择在鼠标指针下一次经过表单本身时执行此操作。
我正在使用当光标位于富文本框内时停止的计时器 1,因此我已经尝试了一些事件,例如鼠标进入、鼠标按下和获得焦点以停止计时器,但这些在以下情况下不起作用我正在滚动 richtextbox。 当光标位于 richtextbox 内时,哪个事件允许我滚动并保持计时器 1 关闭? 谢谢
似乎没有简单的 one-event 方法可以做到这一点。正如您所发现的,单击滚动条时没有 Enter
或 MouseEnter
事件。我认为以下应该做你想要的事情:
Private isScrollingRtb As Boolean = False
Private Sub RichTextBox1_Enter(sender As Object, e As EventArgs) Handles RichTextBox1.Enter
'The RTB received focus.
Timer1.Stop()
End Sub
Private Sub RichTextBox1_Leave(sender As Object, e As EventArgs) Handles RichTextBox1.Leave
'The RTB lost focus.
Timer1.Start()
End Sub
Private Sub RichTextBox1_VScroll(sender As Object, e As EventArgs) Handles RichTextBox1.VScroll
If Not ActiveControl Is RichTextBox1 Then
'The user scrolled the RTB while it did not have focus.
Timer1.Stop()
isScrollingRtb = True
End If
End Sub
Private Sub Form1_MouseEnter(sender As Object, e As EventArgs) Handles Me.MouseEnter
If isScrollingRtb Then
'The user left the RTB after scrolling it without focus.
Timer1.Start()
isScrollingRtb = False
End If
End Sub
当用户单击滚动条时,将引发 VScroll
事件,因此您可以 Stop
Timer
该事件。问题是决定何时再次 Start
它。在此示例中,我选择在鼠标指针下一次经过表单本身时执行此操作。