2011-03-07 91 views

回答

7

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

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

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

dgv2.FirstDisplayedScrollingRowIndex = dgv1.FirstDisplayedScrollingRowIndex 

当然,如果DGV的有不同的ammount的行,你需要避免IndexOutOfRange例外通过检查每个DGV行数。

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

1

你可以把DataGridViews在​​和使用此:

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

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

不幸的是,似乎并没有DataGridView有此属性。

0

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

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

你应该解释它为什么可以工作 – 2015-07-31 01:02:02

+0

Just Rowindex Property。很显然,当行索引不同时需要编写代码来处理异常。 如果你在寻找复杂解决方案 - >阅读http://www.codeproject.com/Articles/39244/Scroll-Synchronization代码(非常野趣) – 2015-08-01 06:23:22

1

使用HorizontalScrollingOffset(或VerticalScrollingOffset)。

this.dataGridViewDataSample.HorizontalScrollingOffset