zoukankan      html  css  js  c++  java
  • 双行表头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的列最后都设置成不能调整宽度,否者会出现列错位的现象。

    效果图:

  • 相关阅读:
    操作系统概念(第十一章) 文件系统实现
    Linux内核中网络数据包的接收-第一部分 概念和框架
    【技术文档】jeecg3.7-maven搭建好开发环境入门
    memcache源码编译安装
    Linux系统级日志系统
    shell流程控制
    EOF多行写入文件防止变量替换
    zip压缩解压
    shell变量的截取总结
    对linux安装中文字体库
  • 原文地址:https://www.cnblogs.com/xiashengwang/p/3193606.html
Copyright © 2011-2022 走看看