zoukankan      html  css  js  c++  java
  • DataGirdView最后一列显示不全的问题

          在使用DataGridView中,一般都是把最后一列设置成全填充,如下:

    dgvStudent.Columns["Remark"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
    如果这样使用的话,那么你把窗体最大化的时候,你就可以看到最后一列,把界面其余空白的地方全部填充了,如下图:
    image
    不管你的窗体有多在,最后一列,一定会把它填充完。但是这样设置有一个问题,比如我们把窗体缩小一点,这时候,窗体会出现一个滚动条,如下图:
    image

         从图片中,我们可以看到,滚动条已经到了最右边,可是我们只能看到最后一列的一点影子,最后一列的内容看不到。如果我们最后一列不设置成Fill的,它就不会出现这个问题,如下图:

         image

        我们可以看到最后一行,这样又有一个问题,那就是,如果设置成Fill,那么滚动条到末尾了,最后一列不出来,如果不设置Fill,最后一列可以出来,但是如果最大化,那么窗体空白的地方会一直是空白,最后一列不会去填充他。

        这两种方法都会有问题,最后找到一种解决的办法,需要加一段代码,首先设置最后一列为固定长度,不设置成Fill,然后在DataGridView的ReSize事件中,加上下面的代码即可:

    private void dgvStudent_Resize(object sender, EventArgs e)
    {
        if (this.Width > 540)
        {
            dgvStudent.Columns["Remark"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
        }
        else
        {
            dgvStudent.Columns["Remark"].Width = 100;
            dgvStudent.Columns["Remark"].AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
        }
    }

    上面代码中540这个数字,就是所有DataGridView列的长度的总和。用上面的方法,这样就可以解决问题了。

  • 相关阅读:
    理解C#中的 async await
    kube-proxy IPVS 模式的工作原理
    Kilo 使用教程
    Wireguard 全互联模式(full mesh)配置指南
    我为什么不鼓吹 WireGuard
    iTerm2 实现 ssh 自动登录,并使用 Zmodem 实现快速传输文件
    在 Docker Desktop 中启用 K8s 服务
    ABP 适用性改造
    ABP 适用性改造
    在 ASP.NET Core 应用中使用 Cookie 进行身份认证
  • 原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/2612058.html
Copyright © 2011-2022 走看看