在WPF中,可以通过绑定两个 RichTextBox 的 ScrollViewer.ScrollChanged 事件,将其中一个 RichTextBox 的垂直滚动条位置赋值给另一个 RichTextBox 的垂直滚动条位置,从而实现两个 RichTextBox 同时滚动的效果。具体步骤如下:
-
给需要同时滚动的两个 RichTextBox 控件分别命名,例如 rtb1 和 rtb2。
-
在 XAML 中为两个 RichTextBox 分别绑定 ScrollViewer.ScrollChanged 事件:
<RichTextBox x:Name="rtb1" ScrollViewer.ScrollChanged="rtb1_ScrollChanged">
<!-- RichTextBox 的内容 -->
</RichTextBox>
<RichTextBox x:Name="rtb2" ScrollViewer.ScrollChanged="rtb2_ScrollChanged">
<!-- RichTextBox 的内容 -->
</RichTextBox>
3. 在代码中编写对应的事件处理程序:
private void rtb1_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
rtb2.ScrollToVerticalOffset(e.VerticalOffset);
}
private void rtb2_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
rtb1.ScrollToVerticalOffset(e.VerticalOffset);
}
这样,当其中一个 RichTextBox 的垂直滚动条位置发生变化时,会触发对应的事件处理程序,从而将该位置赋值给另一个 RichTextBox 的垂直滚动条位置,实现了两个 RichTextBox 的同步滚动效果。