我正在开发一个应用程序,其中从不同的数据源填充两个datagridviews。我想有一个垂直滚动条,可以使两个网格视图同时工作(一起向上和向下滚动)
任何人都可以告诉我如何或指导我一个好的教程。
答案 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;
}