首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自动调整DataGridView控件中的列的大小并允许用户调整同一网格上的列的大小?

如何自动调整DataGridView控件中的列的大小并允许用户调整同一网格上的列的大小?
EN

Stack Overflow用户
提问于 2018-04-17 08:05:20
回答 2查看 0关注 0票数 0

我在Windows窗体(C#2.0不是WPF)上填充DataGridView控件。

我的目标是显示一个网格,整齐地用单元格填充所有可用宽度 - 即右侧没有未使用的(深灰色)区域,并根据其包含的数据适当调整每个列的大小,也允许用户调整任何列的大小他们喜欢。

我试图通过将每列的AutoSizeMode设置为DataGridViewAutoSizeColumnMode.AllCells(除了设置为DataGridViewAutoSizeColumnMode.Fill的其中一列以确保网格的整个区域整齐地填充数据)来实现此目的。(我不介意,当用户尝试调整此列的大小时,它会弹回到确保始终使用水平空间的大小。)

但是,正如我所提到的,一旦加载,我希望允许用户调整列的大小以适合自己的需求 - 为每个列设置这些AutoSizeMode值时,用户无法再调整这些列的大小。

我试过不设置允许调整大小的所有列的AutoSizeMode,但不根据单元格包含的数据设置初始大小。加载数据后,将网格的AutoSizeMode更改回“未设置”时,会出现相同的结果。

有没有我在这里丢失的设置,它允许自动设置默认列宽和用户调整大小,或者有其他技术,我填写DataGridView控件时必须使用?

EN

回答 2

Stack Overflow用户

发布于 2018-04-17 16:46:12

这个技巧适用于我:

代码语言:javascript
复制
grd.DataSource = DT;

//set autosize mode
grd.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
grd.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
grd.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

//datagrid has calculated it's widths so we can store them
for (int i = 0; i <= grd.Columns.Count - 1; i++) {
    //store autosized widths
    int colw = grd.Columns[i].Width;
    //remove autosizing
    grd.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
    //set width to calculated by autosize
    grd.Columns[i].Width = colw;
}

这里发生的是,您将autosize设置为您需要的任何模式,然后逐列存储自动大小计算得到的宽度,移除自动调整大小并将宽度设置为您之前存储的值。

票数 0
EN

Stack Overflow用户

发布于 2018-04-17 17:07:01

也许你可以打电话

代码语言:javascript
复制
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.Fill);

设置数据源后。它将设置宽度并允许调整大小。

更多关于MSDN DataGridView.AutoResizeColumns方法(DataGridViewAutoSizeColumnsMode)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档