关于c# winform datagrid的列宽如何设置为自动适应内容宽度? 在网上找到的这段代码 10

publicvoidAutoSizeTable(DataGriddgData){intnumCols=dgData.TableStyles[0].GridColumnSt... 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.请问如何解决此问题
展开
 我来答
cnmahj
2011-09-09 · TA获得超过954个赞
知道小有建树答主
回答量:785
采纳率:0%
帮助的人:1061万
展开全部
你找到的这种方法当系统主题的字体大小变更时无法取得正确列宽。
建议你使用Graphics.MeasureString方法来计算文字使用的宽度。
循环你要处理的列的所有字段的值,计算出其中最大宽度,在修改列宽即可。
如果数据量太大,也可以只是计算显示的内容,或者缓冲区中的内容。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式