有没有办法让DataGridView适应列/行的宽度和高度?我找到了一个需要手动计算的解决方案:http://www.codeguru.com/csharp/.net/net_data/datagrid/article.php/c9603 DataGridView真的不支持这个功能吗?
发布于 2011-06-21 19:46:19
如果要根据数据自动调整所有列的大小,请执行以下操作:
for (int i = 0; i < dataGridView.Columns.Count; i++)
{
dataGridView.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
}发布于 2015-10-08 16:14:34
这是一个被误解的相当古老的问题。Idsa想要实现的是让实际的AutoSize winforms特性能够与DataGridView协同工作。该属性存在,但没有任何效果。
这意味着DataGridView必须适合其内容,而不是其内容必须适合DataGridView。
要实现AutoSize实现,有很多事情需要考虑。DataGridView的大小取决于很多条件:
最好的方法是选择一组适合您特定场景的条件,并编写一些将为您计算DataGridView大小的内容。
以下是我的特定场景作为示例:
DataBindingComplete事件上。Scrollbars属性设置为None。将行和列的自动调整大小模式设置为AllCells.中
下面的扩展方法符合我的需要。它非常简单,因为我的网格非常简单。您可能需要对其进行一些调整以使其按您所希望的方式工作,并且需要进行大量的工作才能使其适用于每种DataGridView场景。
public static void HandleAutoSize(this DataGridView dgv)
{
dgv.DataBindingComplete += (s, e) =>
{
var dg = (DataGridView)s;
var width = dg.Columns.GetColumnsWidth(DataGridViewElementStates.None);
var height = dg.Rows.GetRowsHeight(DataGridViewElementStates.None);
dg.ClientSize = new Size(width, height);
};
}发布于 2011-06-21 19:41:52
使用AutoSizeMode和Fill Mode
https://stackoverflow.com/questions/6424514
复制相似问题