同步两个DataGridView的水平滚动事件

6

我需要同步两个DataGridView控件的滚动事件,以便当我水平滚动第一个DGV时,第二个DGV也应该以相同的方式滚动。

这是可能的吗?这可以在设计时设置吗?


1
你想让这个成为双向同步吗? - CAD
2个回答

10

这可以通过以下代码完成。您可能正在寻找 C# 的实现方式,但以下是我在 VB.NET 应用程序中使用的代码。只需将其转换为 C# ;)

对于第一个网格,编写...

Private Sub DataGridView1_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles DataGridView1.Scroll

        If e.ScrollOrientation = ScrollOrientation.VerticalScroll Then Exit Sub
        If Me.DataGridView2.Rows.Count > 0 And Me.DataGridView1.Rows.Count > 0 Then
            Me.DataGridView2.HorizontalScrollingOffset = e.NewValue 'Me.DataGridView1.HorizontalScrollingOffset
        End If

End Sub

对于第二个网格,请编写...

Private Sub DataGridView2_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles DataGridView2.Scroll

        If e.ScrollOrientation = ScrollOrientation.VerticalScroll Then Exit Sub
        If Me.DataGridView1.Rows.Count > 0 And Me.DataGridView2.Rows.Count > 0 Then
            Me.DataGridView1.HorizontalScrollingOffset = e.NewValue 'Me.DataGridView2.HorizontalScrollingOffset
        End If

End Sub

希望这有帮助吗?


0
这里是一个C#示例;翻译自@CAD的回答
如果使用Visual Studio,您可以通过单击侦听器中“滚动”旁边的空白单元格轻松创建一个空白函数。

scroll listener

然后将相同的内容添加到两个位置:

private void dataGridViewLeft_Scroll(object sender, ScrollEventArgs e)
{
    if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll && dataGridViewLeft.Rows.Count > 0 && dataGridViewRight.Rows.Count > 0)
    {
        dataGridViewRight.HorizontalScrollingOffset = dataGridViewLeft.HorizontalScrollingOffset;
    }
}

private void dataGridViewRight_Scroll(object sender, ScrollEventArgs e)
{
    if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll && dataGridViewRight.Rows.Count > 0 && dataGridViewLeft.Rows.Count > 0)
    {
        dataGridViewLeft.HorizontalScrollingOffset = dataGridViewRight.HorizontalScrollingOffset;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接