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

2024-04-09

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

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

我试图通过将每列的 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;
}

在上面的代码中:您设置列AutoSize财产给任何东西AutoSizeMode你需要。 然后(逐列)存储每个列的宽度值(从AutoSize价值); 禁用AutoSize属性,最后将列宽设置为您之前存储的宽度值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐