2016-11-11 75 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