2012-07-17 761 views
3

实现我有2个DataGrid中有相同数量的列的DataGridView需要隐藏滚动条,而滚动应该通过代码

Datagrid1是只显示标题, Datagrid2的是它下面显示的所有数据。实质上,2格表示需要同步以显示为1格。

我的问题是我需要隐藏datagrid1的水平滚动条,但只显示datagrid2的水平滚动条。 当用户滚动datagrid2时,我需要以编程方式同步datagrid1上的标题。

任何人都可以建议吗?

回答

2

您可以设置DataGridViews的ScrollBasr属性以隐藏垂直滚动条

例如,在链接 http://msdn.microsoft.com/en-us/library/system.windows.forms.scrollbars

+1

感谢Hatsoft,我明白了如何隐藏滚动条......如何同步它当用户滚动第二格? – Kamath 2012-07-17 21:32:11

+0

@Kamath你的意思是,如果用户移动第二个网格的滚动条,甚至第一个网格滚动条必须移动? – HatSoft 2012-07-17 21:33:47

+0

是的,这是正确的Hatsoft .. – Kamath 2012-07-17 21:52:39

0

您可以设置VerticalScrollingOffset值来定位你想要的索引处的滚动条

dataGridViews1.ScrollBars = ScrollBars.None; 

或看其他枚举值。处理第二个DGV中的滚动事件,并为第一个DGv设置此VerticalScrollingOffset。这应该有所帮助。

0

我有同样的概念,像你..我已经解决了它,如下所示:它可以帮助你。

private void dgvHeader_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) 
    { 
     //When Header Grid Width Changes automatically Below Grid's COLUMN width will be changes 
     dgvData.Columns[e.Column.Index].Width = e.Column.Width; 
    } 
4

试试这个..

dataGridViews1.ScrollBars = ScrollBars.None; 

private void dataGridViews2_Scroll(object sender, ScrollEventArgs e) 
    { 
     int offSetValue = dataGridViews1.HorizontalScrollingOffset; 

     try 
      { 
      dataGridViews1.HorizontalScrollingOffset = offSetValue; 
      } 
     catch { } 

      dataGridViews1.Invalidate(); 
    }