C#窗口形成2个带有同步滚动的网格视图

时间:2011-03-07 13:36:20

标签: c# winforms datagridview

我正在开发一个应用程序,其中从不同的数据源填充两个datagridviews。我想有一个垂直滚动条,可以使两个网格视图同时工作(一起向上和向下滚动)

任何人都可以告诉我如何或指导我一个好的教程。

7 个答案:

答案 0 :(得分:7)

如果您有dgv1和dgv2,则可以创建类似

的内容
dgv1.Scroll += new System.Windows.Forms.ScrollEventHandler(dgv1_Scroll);

然后,在dgv1_Scroll方法中,您可以使用FirstDisplayedScrollingRowIndex属性:

dgv2.FirstDisplayedScrollingRowIndex = dgv1.FirstDisplayedScrollingRowIndex

当然,如果dgv具有不同的行数,则需要通过检查每个dgv行数来避免IndexOutOfRange异常。

答案 1 :(得分:1)

我相信你可以设置类似事件的场景,每当滚动条A的“值”发生变化时,也可以将滚动条B更改为适当的值。

(注意,值是滚动条的属性,我不是指容器内数据的值。)

请参阅以下有关滚动条属性的msdn文章,以便更好地参考:

http://msdn.microsoft.com/en-us/library/system.windows.forms.scrollbar.value.aspx

班级本身 - http://msdn.microsoft.com/en-us/library/system.windows.forms.scrollbar.aspx

答案 2 :(得分:1)

您可以将DataGridViews放入Panels并使用此功能:

public Form1()
{
    InitializeComponent();
    panel1.Scroll += new ScrollEventHandler(panel1_Scroll);
}

void panel1_Scroll(object sender, ScrollEventArgs e)
{
    panel2.AutoScrollPosition = new Point(0,e.NewValue);
}

不幸的是DataGridView似乎没有这个属性。

答案 3 :(得分:1)

http://www.xs4all.nl/~wrb/Articles_2010/Article_DataGridViewScroll_01.htm

这个链接显示了我需要的东西并且对我来说很好。我现在唯一的问题是datagrids中没有相同的行。所以,即使一个人完成(不再滚动),另一个人必须能够继续。

有什么建议吗?

答案 4 :(得分:1)

使用HorizontalScrollingOffset(或VerticalScrollingOffset)。

this.dataGridViewDataSample.HorizontalScrollingOffset

答案 5 :(得分:0)

看看this。当我滚动其中任何一个时,我想同步两个列表视图。你可以使用自定义控件实现这一点。代码就像一个魅力。

答案 6 :(得分:-1)

_dataGridViewInput.Scroll += new ScrollEventHandler(_dataGridViewInput_Scroll);
_dataGridViewOutput.Scroll += new ScrollEventHandler(_dataGridViewOutput_Scroll);

void _dataGridViewInput_Scroll(object sender, ScrollEventArgs e)
{
    this._dataGridViewOutput.FirstDisplayedScrollingRowIndex = this._dataGridViewInput.FirstDisplayedScrollingRowIndex;
}

void _dataGridViewOutput_Scroll(object sender, ScrollEventArgs e)
{
    this._dataGridViewInput.FirstDisplayedScrollingRowIndex = this._dataGridViewOutput.FirstDisplayedScrollingRowIndex;
}