代码改变世界

DataGirdView最后一列显示不全的问题

2012-07-27 16:34  左眼微笑右眼泪  阅读(1787)  评论(0编辑  收藏  举报

      在使用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列的长度的总和。用上面的方法,这样就可以解决问题了。