gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:35:12 26 4
gpt4 key购买 nike

我正在 Windows 窗体(C# 2.0 而非 WPF)上填充 DataGridView 控件。

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

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

但是,正如我提到的,一旦加载,我希望允许用户调整列的大小以满足他们自己的要求 - 在为每一列设置这些 AutoSizeMode 值时,用户似乎无法再调整这些列的大小。

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

这里是否缺少允许自动设置默认列宽和用户调整大小的设置,或者在填充 DataGridView 控件时是否必须使用另一种技术?

最佳答案

这个技巧对我有用:

grd.DataSource = DT;

// Set your desired AutoSize Mode:
grd.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
grd.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
grd.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

// Now that DataGridView has calculated it's Widths; we can now store each column Width values.
for (int i = 0; i <= grd.Columns.Count - 1; i++)
{
// Store Auto Sized Widths:
int colw = grd.Columns[i].Width;

// Remove AutoSizing:
grd.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;

// Set Width to calculated AutoSize value:
grd.Columns[i].Width = colw;
}

在上面的代码中:您可以将 Columns AutoSize 属性设置为您需要的任何 AutoSizeMode。然后(逐列)存储每个列的宽度值(来自 AutoSize 值);禁用 AutoSize 属性,最后将列宽设置为您之前存储的宽度值。

关于c# - 您如何自动调整 DataGridView 控件中的列大小并允许用户调整同一网格上的列大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1025670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com