统一滚动

时间:2015-06-14 10:09:22

标签: c# winforms scroll datagridview

我有两个数据浏览,要求是两个datagriviews需要一致滚动才能让用户能够看到'Input'。澄清:

  1. 我将通过浏览原始文件
  2. 来创建新文件
  3. 当它加载(grid1)时,它加载一个网格为空(grid2),这样我就可以从grid2输入。
  4. 上面的所有内容都正常工作,因为我可以保存和编辑文件。我创建了unison滚动,但它只滚动一行并在下面抛出错误,

      

    错误:mscorlib.dll中出现未处理的“System.OutOfMemoryException”类型异常

    滚动代码,

    private void Gridview1_Scroll(object sender, ScrollEventArgs e)
    {
        foreach (DataGridViewRow _row in Gridview1.Rows)
        {
            for (int n = 0; n < Gridview1.Columns.Count; n++)
            {
                Gridview1.Scroll += new System.Windows.Forms.ScrollEventHandler(Gridview1_Scroll);  //it throws an error here.
            }
        }
    
        foreach (DataGridViewRow _roww in Gridview2.Rows)
        {
            for (int nn = 0; nn < Gridview2.Columns.Count; nn++)
            {
                Gridview2.FirstDisplayedScrollingRowIndex = Gridview1.FirstDisplayedScrollingRowIndex;
            }
        }
    }
    

1 个答案:

答案 0 :(得分:0)

移动这部分:

Gridview1.Scroll += new System.Windows.Forms.ScrollEventHandler(Gridview1_Scroll);

到表单的构造函数。循环是不必要的(代码不依赖于循环变量_rown)。

此外,在这部分:

foreach (DataGridViewRow _roww in Gridview2.Rows)
{
  for (int nn = 0; nn < Gridview2.Columns.Count; nn++)
  {
    Gridview2.FirstDisplayedScrollingRowIndex = Gridview1.FirstDisplayedScrollingRowIndex;
  }
}
不需要

循环。这部分:

Gridview2.FirstDisplayedScrollingRowIndex = Gridview1.FirstDisplayedScrollingRowIndex;

将自行运行 - 请注意,它也不依赖于循环变量_rowwnn