2016-11-11 159 views
1

我正在开发一个触摸屏应用程序。我被要求让滚动条的大小更大,以便用户可以使用它们。到目前为止,我还没有能够得到这个排序。我读过,如果你增加MainForm窗口滚动条的宽度,那么dataGridView将继承它。我已经尝试了一些东西,但迄今为止都没有得到它的工作。更改dataGridView中垂直滚动条的宽度

距离最近的两个方法我试过是

1)当我建立网格我添加以下

foreach (Control ctrl in dataGridView1.Controls) 
    if (ctrl.GetType() == typeof(VScrollBar)) 
     ctrl.Width = 86; 

不幸的是这似乎得到17的宽度,但无法与该重写它新值为86.

接下来我把它放到了我建立MainForm的地方,仍然没有好的垂直滚动条仍然看起来一样。

2)我发现我可以从工具箱中添加一个滚动条。这里有点进步,直到我尝试连接到dataGridView。这我不能做。我有一个事件,所以每次它被移动,我应该能够移动网格。下面注释掉了一些我用来确保获得价值的物品。

private void vScrollBar1_Scroll(object sender, ScrollEventArgs e) 
    { 
     //MessageBox.Show(vScrollBar1.Value.ToString()); 
     // MessageBox.Show(SystemInformation.VerticalScrollBarWidth.ToString()); 
     // CalculateVerticalScrollbarWidth() * 4; 
    } 

所以我想我会问比我更高的智力的观众,因为有人可能已经解决了这个问题,并会与我分享答案。

+0

WPF或WinForms的还是其他什么东西? – dymanoid

回答

3

您可以关闭DGV的垂直滚动条:

dataGridView1.ScrollBars = ScrollBars.Horizontal; 

并添加VerticalScrolllBar控制来代替。一定要保持它的大小在snych也是它Maximum

vScrollBar1.Maximum = dataGridView1.RowCount; 

要同步代码滚动Scroll事件:

private void dataGridView1_Scroll(object sender, ScrollEventArgs e) 
{ 
    vScrollBar1.Value = e.NewValue; 
} 


private void vScrollBar1_Scroll(object sender, ScrollEventArgs e) 
{ 
    dataGridView1.FirstDisplayedScrollingRowIndex = e.NewValue; 
} 

enter image description here

+0

谢谢,似乎解决了这个问题。 – user3884423