双行表头DatagridView的简单实现

摘要:
默认情况下,DatagridView不支持实现多行标头。可以使用一些第三方控件,如Spread。因此,要实现此功能,您必须考虑自己的方式。2.使用两个DataGridView,一个显示第一行的标题,另一个显示第二行的标题和数据部分。知道原因后,我们可以调整第一个DatagridView的最后一列的宽度,假设它是100,而第二个DatagridView的最后一行的宽度是100-20=80,这为滚动条保留了一个位置。2) 这两个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的列最后都设置成不能调整宽度,否者会出现列错位的现象。

效果图:

双行表头DatagridView的简单实现第1张

免责声明:文章转载自《双行表头DatagridView的简单实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇万亿级日志与行为数据存储查询技术剖析(续)——Tindex是改造的lucene和druidVS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

GJM:C# WinForm开发系列

1.DataGridView实现课程表testcontrol.rar 2.DataGridView二维表头及单元格合并DataGridView单元格合并和二维表头.rarmyMultiColHeaderDgv.rar 3.DataGridView单元格显示GIF图片gifanimationindatagrid.rar 4.自定义显示DataGrid...

DataGridView只显示数据源中绑定的字段

场景: 由于环境需要,在获取数据源的时候会获取多于DataGridView中绑定的字段,若不做任何处理,直接将数据源绑定到DataGridView上面,DataGridView就会将数据源中没有绑定的字段显示出来,这样就不符合我们的需求了。 DataGridView中有一个属性AutoGenerateColumns来控制这种情况。 在绑定数据源之前将Aut...

C# WinForm开发系列 DataGrid/DataGridView

在WinForm开发中,DataGrid/DataGridView被广泛使用于绑定数据库中数据进行呈现.整理一些关于DataGrid /DataGridView使用的文章,涉及DataGrid/DataGridView基本功能,自定义绘制控件,数据导入/导出(Excel),打印 等. 1.新数据网格简介(DataGridView) 2.自定义DataGri...

C#窗体控件DataGridView常用设置

C#窗体控件DataGridView常用设置 在默认情况下,datagridview的显示效果: 1.禁用最后一行空白。   默认情况下,最后一行空白表示自动新增行,对于需要在控件中进行编辑,可以保留 dataGridView1.AllowUserToAddRows = false;   上述禁用,仅是将用户界面交互的自动新增行禁了,但还是可以通过代码:...

关于WinForm中的DataGridView控件显示数据字典的解决方案。

做这部分功能的时候,上网搜索了很多资料,发现很少涉及到这方面的解决方案,找了相关的问题帖子,很多人都叫使用视图去处理,当然,用视图是可以解决这个问题,但是,这么多个表,都用视图去搞,那还得做这么多个视图...........这肯定不科学了。还有如果用视图去做,那么数据实体就与实际的表不一致了,所以,我们需要找到一个解决DataGridView的某个列需要按...

winform DataGridView控件的打印

借用网上的代码,应该是完整的打印过程了。有打印,预览,设置三个按钮 代码: public partial class Example : Form { //打印文檔 PrintDocument pdDocument = new PrintDocument(); //打印格式設置頁面 PageSetupDialog dlgPageSetup = new Pa...