标题:DataGrid在From中如何才能让列的宽度自动适应?
取消只看楼主
sjcries
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-10-30
 问题点数:0 回复次数:3 
DataGrid在From中如何才能让列的宽度自动适应?
如题  
搜索更多相关主题的帖子: DataGrid From 宽度 自动 
2005-11-10 19:42
sjcries
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-10-30
得分:0 
双击列标题边界可以让他自适应。。
为什么就找不到手动的函数。。。 郁闷
2005-11-10 19:54
sjcries
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-10-30
得分:0 
已经找到解决方法了.
2005-11-10 20:57
sjcries
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-10-30
得分:0 

public class DataGrid列自适应
{
public DataGrid列自适应()
{
}
static public void SizeColumnsToContent(DataGrid dataGrid, int nRowsToScan)
{
Graphics mGraphics = dataGrid.CreateGraphics();
DataGridTableStyle tableStyle= new DataGridTableStyle();
try
{
DataView dataView = (DataView)dataGrid.DataSource;  //我是和DataView帮定的
if(nRowsToScan == -1)
{
nRowsToScan = dataView.Count;
}
else
{
nRowsToScan = System.Math.Min(nRowsToScan, dataView.Count);
}
dataGrid.TableStyles.Clear();
tableStyle.MappingName = dataView.Table.TableName;


DataGridTextBoxColumn columnStyle;
int iWidth;

for(int iCurrCol = 0; iCurrCol<dataView.Table.Columns.Count; iCurrCol++)
{
DataColumn dataColumn = dataView.Table.Columns[iCurrCol];
columnStyle = new DataGridTextBoxColumn();
columnStyle.TextBox.Enabled = true;
columnStyle.HeaderText = dataColumn.ColumnName;
columnStyle.MappingName = dataColumn.ColumnName;
iWidth = Convert.ToInt32(mGraphics.MeasureString(columnStyle.HeaderText, dataGrid.Font).Width);
DataRowView dataRow;
for(int iRow = 0; iRow<nRowsToScan; iRow++)
{
dataRow = dataView[iRow];
if (dataRow[dataColumn.ColumnName] != null )
{
int iColWidth = Convert.ToInt32(mGraphics.MeasureString(dataRow[iCurrCol].ToString(), dataGrid.Font).Width);
int iColHight = Convert.ToInt32(mGraphics.MeasureString(dataRow[iCurrCol].ToString(), dataGrid.Font).Height);
iWidth = Convert.ToInt32(System.Math.Max(iWidth, iColWidth));
}
}
columnStyle.Width = iWidth + 10;
tableStyle.GridColumnStyles.Add(columnStyle);

}
dataGrid.TableStyles.Add(tableStyle);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
mGraphics.Dispose();
}
}

}

这个是网上一个VB代码改的 我代码里的DataGrid是和DataView数据帮定的 如果你是和DataTable帮定的话就改一下

2005-11-11 15:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-33343-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.264406 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved