我的DataGridView中有3列。我要做的是让前2列自动与内容的宽度相匹配,并让第3列填充剩余的空间。
在WinForms中可以做吗?如果有任何用处,我将从EF DataContext加载我的数据。我已经包括了一个图像,它目前的外观。

发布于 2013-09-06 21:27:30
您需要使用DataGridViewColumn.AutoSizeMode属性。
您可以对第0列和第1列使用这些值之一:
AllCells:列宽度调整以适应列中所有单元格(包括标头单元格)的内容。 AllCellsExceptHeader:列宽度调整以适应列中所有单元格的内容,不包括标头单元格。 DisplayedCells:列宽度调整以适应列中当前在屏幕上显示的行(包括标题单元格)中所有单元格的内容。 DisplayedCellsExceptHeader:列宽度调整以适应列中当前显示在屏幕上的所有单元格的内容,不包括标题单元格。
然后,对第2列使用Fill值。
列宽度调整,以便所有列的宽度准确地填充控件的显示区域.
this.DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
this.DataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
this.DataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;正如其他用户所指出的,可以使用datagridview属性在DataGridView.AutoSizeColumnsMode级别设置默认值。
this.DataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
this.DataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;可以是:
this.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;重要注意事项:
如果网格绑定到数据源并自动生成列(AutoGenerateColumns属性设置为True),则需要在创建DataBindingComplete列之后使用DataBindingComplete事件应用样式。
在某些情况下(例如,通过代码更改单元格值),我必须调用DataGridView1.AutoResizeColumns();来刷新网格。
发布于 2015-07-28 19:54:46
这是我最喜欢的方法..。
_dataGrid.DataBindingComplete += (o, _) =>
{
var dataGridView = o as DataGridView;
if (dataGridView != null)
{
dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView.Columns[dataGridView.ColumnCount-1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
};发布于 2015-06-25 11:59:03
只是更改控件属性的属性: AutoSizeColumnsMode:Fill
或代码
dataGridView1.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.Fill;
https://stackoverflow.com/questions/18666582
复制相似问题