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

    效果图:

  • 相关阅读:
    extjs 表单显示控制
    windows net user
    ORACLE截取时间
    oracle to_timestamp
    oracle to_date
    ext numberfield小数模式
    ext 仅文字field
    extjs 占位字段
    [转]CPU的位数与操作系统的位数的区别
    32位的Win7系统下安装64位的Sql Sever?
  • 原文地址:https://www.cnblogs.com/xiashengwang/p/3193606.html
Copyright © 2020-2023  润新知