我希望默认情况下列使用
AutoSizeMode = DisplayedCells;
我希望能够调整列的大小,但是DisplayedCells
类型不允许调整大小。
有什么想法吗?
AutoSizeMode = DisplayedCells;
我希望能够调整列的大小,但是DisplayedCells
类型不允许调整大小。
有什么想法吗?
你可以在方便的时候调用子方法 DataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells)
,比如在加载数据之后。不要修改DataGridView.AutoSizeColumnsMode
属性,这样用户仍然可以自己调整列的大小,但是他们会有一个舒适的起点。两全其美。
DataGridViewAutoSizeColumnMode.None
。你想将它设置为DisplayedCells
,因为你可能希望根据单元格文本长度来展开或收缩列宽度。所以我的想法是每次CellBeginEdit
开始时,我们将AutoSizeMode
设置为DisplayedCells,当CellEndEdit
开始时,我们保存宽度(它已经为您自动调整大小),然后将AutoSizeMode
重置为None
,然后将列宽度分配给保存的值。这是我的代码://First before loading data
private void form_Load(object sender, EventArgs e){
dataGridView.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
//Fill your dataGridView here
//.........
//.........
int w = dataGridView.Columns[0].Width;
//reset to None
dataGridView.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dataGridView.Columns[0].Width = w;
}
//Now for CellBeginEdit and CellEndEdit
private void dataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
if(e.ColumnIndex == 0) //because I suppose the interested column here is Columns[0]
dataGridView.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
}
private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if(e.ColumnIndex == 0){
int w = dataGridView.Columns[0].Width;
dataGridView.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dataGridView.Columns[0].Width = w;
}
}
行:
dataGridView1.AutoResizeRow(2, DataGridViewAutoSizeRowMode.AllCellsExceptHeader);
栏目:
dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
private void Form1_Load(object sender, EventArgs e)
{
// Designer has autosize set to displayedcells.
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None; // Turn off autosize
dataGridView1.AllowUserToResizeRows = true; // Turn on letting user size columns
dataGridView1.AllowUserToOrderColumns = true;
}
在Visual Studio 2008(和VB.net)中,对我有效的唯一方法是:
For i As Integer = 0 To grdList2.Columns.Count - 1
If i <> (grdList2.Columns.Count - 1) Then
grdList2.Columns(i).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
Else
grdList2.Columns(i).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
End If
Next
AutoResizeColumns(int columnIndex, DataGridViewAutoSizeColumnsMode dataGridViewAutoSizeColumnsMode)
之前,在DataGridView
上调用Refresh()
。 - Derek W