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

    效果图:

  • 相关阅读:
    安装apache服务
    基于mysqld_multi实现MySQL 5.7.24多实例多进程配置
    linux安装lolcat实现彩色文字输出信息
    haproxy+keepalived实现高可用
    LVS DR模拟实验
    nginx+keepalived实现高可用
    cpu相关信息查看
    LVS集群
    session之memcache
    tomcat之redis
  • 原文地址:https://www.cnblogs.com/xiashengwang/p/3193606.html
Copyright © 2011-2022 走看看