DataGridView列宽自动调整的问题

cf_fairchild 2016-09-28 01:28:29
如题,我使用DisplayedCell模式自动调整列宽,然后在Scroll事件里调用AutoResizeColumns。
可以自动调整列宽使得符合当前数据的宽度。

但这样做有个遗憾,就是当当前显示的数据列长度加起来都不足以占满整个dataGridView的控件宽度时,DisplayedCell会使得整个控件的右边出现空白,这样就不是很好看了,但是如果我使用Fill,那么当内容长度大于整个控件宽度时,就会显示不完全,而且此时Fill限制你无法手动调整列宽。

我想要实现这样一个效果,在所有数据列按照DisplayedCell调整大小后,如果所有列宽度加起来,大于或等于控件宽度,就不管了。如果没有填满控件,就让最后一列(最右边的一列)的列宽调整为类似Fill的效果,占满控件。

琢磨了很久,还没有实现,不知道我描述清除问题了没有
...全文
487 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
修改一下昵称 2016-09-28
  • 打赏
  • 举报
回复
解决了就好 d
cf_fairchild 2016-09-28
  • 打赏
  • 举报
回复
来个人。。。又送分了。。。
cf_fairchild 2016-09-28
  • 打赏
  • 举报
回复
自己解决了。。。分享下我的解决思路
        private void Form1_Shown(object sender, EventArgs e) {
            dgv.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);
        }
        private void dgv_Scroll(object sender, ScrollEventArgs e) {
            if(e.ScrollOrientation == ScrollOrientation.VerticalScroll) {
                dgv.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                dgv.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);
            }
        }
        private void dgv_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) {
            int nWidth = dgv.Columns[0].Width + dgv.Columns[1].Width; // 测试时只有两列
            if(nWidth < 391) { // 391是dgv控件原始宽度。
                dgv.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            }
        }

8,833

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 组件/控件开发
社区管理员
  • 组件/控件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧