雙行表頭DatagridView的簡單實現


DatagridView默認不支持多行表頭的實現,一些第三方的控件,比如Spread就可以,因此要實現這個功能,只能自己想辦法了。
介紹兩種思路:
1,用重寫DataGridView的Paint等方法,可以重畫表頭,這個實現起來較為復雜,費時費力,此處略去。
2,利用兩個DataGridView,一個DataGridView用來顯示第一行標題,另一個DatagridView用來顯示第二行表頭以及數據部分。
實現中遇到一個問題,當列數很多的時候,第二個DatagridView會出現水平滾動條,拉動滾動條,第一個DatagridView並沒有隨着同步滾動,解決這個問題的方法
是在第二個DatagridView的Scroll事件中寫如下代碼:

void dataGridView2_Scroll(object sender, ScrollEventArgs e)
{
//滾動條的位置同步
this.dataGridView1.HorizontalScrollingOffset = this.dataGridView2.HorizontalScrollingOffset
}

  有了上面的代碼,功能基本就出來了,但是有幾個問題要注意:

1)第二個DatagridView數據太多出現豎滾動條的時候,橫滾動條拉到最后一列的位置,會出現上下兩個DatagridView輕微錯位(一個滾動條的寬度),
原因是第一個DatagridView沒有豎滾動條,滾動的幅度會比下面一個DatagridView小一個滾動條的寬度。知道了原因,我們可以調整第一個DatagridView的
最后一列寬度假設為100,第二個DatagridView的最后一列的寬度為100-20=80,這個就預留出一個滾動條的位置。
2)這兩個DatagridView的列最后都設置成不能調整寬度,否者會出現列錯位的現象。

效果圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM