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

crcmnpdw  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(169)

我需要同步两个DataGridView控件的scroll事件,这样当我水平滚动第一个DGV时,第二个DGV也应该以相同的方式滚动。
这是可能的吗?这可以在设计时设置吗?

rqenqsqc

rqenqsqc1#

这可以在如下代码中完成。您可能正在寻找一种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

希望这对你有帮助?

kmb7vmvb

kmb7vmvb2#

下面是一个C#示例;翻译自@民航处的答复
如果使用Visual Studio,则可以通过单击侦听器中“Scroll”旁边的空白单元格轻松创建空白函数。

然后将相同的内容添加到两者中:

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;
    }
}

相关问题