关于c# winform datagrid的列宽如何设置为自动适应内容宽度? 在网上找到的这段代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于c# winform datagrid的列宽如何设置为自动适应内容宽度? 在网上找到的这段代码相关的知识,希望对你有一定的参考价值。
public void AutoSizeTable(DataGrid dgData)
int numCols = dgData.TableStyles[0].GridColumnStyles.Count;
for (int i = 0; i < numCols; i++)
AutoSizeCol(dgData,i);
private static void AutoSizeCol(DataGrid dgData, int colIndex)
int rowNums = ((DataTable)dgData.DataSource).Rows.Count;
Byte[] myByte = System.Text.Encoding.Default.GetBytes(dgData.TableStyles["ROW"].GridColumnStyles
[colIndex].HeaderText);
int textCount = myByte.Length;
int tempCount = 0;
for (int i = 0; i < rowNums; i++)
if (dgData[i, colIndex] != null)
myByte = System.Text.Encoding.Default.GetBytes(dgData[i, colIndex].ToString().Trim());
tempCount = myByte.Length;
if (tempCount > textCount)
textCount = tempCount;
dgData.TableStyles[0].GridColumnStyles[colIndex].Width = textCount * 7;
但放进程序后,dgData的值总是为null.请问如何解决此问题
建议你使用Graphics.MeasureString方法来计算文字使用的宽度。
循环你要处理的列的所有字段的值,计算出其中最大宽度,在修改列宽即可。
如果数据量太大,也可以只是计算显示的内容,或者缓冲区中的内容。
以上是关于关于c# winform datagrid的列宽如何设置为自动适应内容宽度? 在网上找到的这段代码的主要内容,如果未能解决你的问题,请参考以下文章
Windows Mobile 应用程序中 DataGrid 的列宽
增加 Silverlight DataGrid 中的列宽以填充整个 DG 宽度