You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET WinForm实现两个TextBox鼠标滚轮同步滚动方案

VB.NET WinForm实现两个TextBox鼠标滚轮同步滚动的简便方法

直接通过绑定鼠标滚轮事件并同步滚动位置即可实现,步骤如下:

1. 绑定事件

在窗体的Load事件或者构造函数中,为两个TextBox绑定同一个鼠标滚轮事件处理方法:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    AddHandler RanTextBox.MouseWheel, AddressOf TextBox_MouseWheel
    AddHandler PosTextBox.MouseWheel, AddressOf TextBox_MouseWheel
End Sub

2. 实现同步滚动逻辑

编写统一的鼠标滚轮事件处理方法,同步两个TextBox的垂直滚动位置:

Private Sub TextBox_MouseWheel(sender As Object, e As MouseEventArgs)
    Dim sourceTb = DirectCast(sender, TextBox)
    Dim targetTb = If(sourceTb Is RanTextBox, PosTextBox, RanTextBox)

    ' 计算滚动后的位置(按行高调整步长,适配默认滚动逻辑)
    Dim scrollStep = sourceTb.Font.Height
    Dim newScrollVal = sourceTb.VerticalScroll.Value - (e.Delta \ 120) * scrollStep

    ' 限制滚动值在有效范围内
    newScrollVal = Math.Max(sourceTb.VerticalScroll.Minimum, Math.Min(newScrollVal, sourceTb.VerticalScroll.Maximum))

    ' 同步目标TextBox的滚动位置并刷新
    targetTb.VerticalScroll.Value = newScrollVal
    targetTb.Refresh()

    ' 阻止事件传递,避免循环触发
    e.Handled = True
End Sub

注意事项

  • 确保两个TextBox的Multiline属性设为True,ScrollBars属性设为Vertical(或Both)
  • 如果两个TextBox使用不同字体,需要调整scrollStep的值以匹配实际行高,保证滚动同步精度
  • 该方法无需额外依赖,仅通过原生WinForm事件实现,属于轻量简便的解决方案

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:33:15