vb.net - 光标滚动富文本框时停止计时器
问题描述
我正在使用当光标位于富文本框内时停止的 timer1,所以我已经尝试了一些事件,例如鼠标输入、鼠标按下和获得焦点以停止计时器,但是当我滚动富文本框时这些事件不起作用. 当光标位于富文本框内时,哪个事件允许我滚动并关闭计时器 1?谢谢
解决方案
似乎没有简单的单一事件方式来做到这一点。正如您所发现的,单击滚动条时没有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
再次使用它。在此示例中,我选择在鼠标指针下一次移过表单本身时执行此操作。
推荐阅读
- linux - ulimit -a 输出和“cat /proc/PID/limits”有什么区别?
- python - 如何正确索引
- google-app-engine - 部署在 App Engine 上的带有 Hibernate 的 SpringBoot App 无法连接到 Cloud SQL
- linux - ucarp 选择主模式时 ARP 错误
- youtube - youtube iframe 播放列表无法隐藏每个视频的标题
- css - 滚动在 safari 上不起作用,但抓取滚动条确实有效
- linux - 如何在不克隆整台机器的情况下将 docker 迁移到另一台机器上
- sql - 在 Netezza Aginity 中显示 CRATE TABLE
- android - Google 在 android 上使用 firebase 登录一直失败
- elasticsearch - Elasticsearch 使用可选对象数组创建索引模板架构