c #datagridview column autosizemode

时间:2013-06-07 15:06:28

标签: c# winforms datagridview autoresize datagridtemplatecolumn

我希望默认情况下列使用

AutoSizeMode = DisplayedCells;

但我希望也可以调整列的大小,但DisplayedCells类型不允许调整大小..

任何想法?

5 个答案:

答案 0 :(得分:6)

只要方便,您就可以调用子DataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells),例如在加载数据之后。单独保留DataGridView.AutoSizeColumnsMode属性,用户仍然可以自己调整列的大小,但它们将有一个舒适的开始。两全其美。

答案 1 :(得分:1)

<强>行:

dataGridView1.AutoResizeRow(2, DataGridViewAutoSizeRowMode.AllCellsExceptHeader);

<强>柱:

dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

答案 2 :(得分:1)

我认为你无法实现这一点,因为AutoSizeMode曾经设置为DisplayedCells,所有行为都是由设计控制的。但我有这个想法。你应该保留你的列(我认为Columns [0]用于演示目的)AutoSizeMode固定在DataGridViewAutoSizeColumnMode.None。您希望将其设置为DisplayedCells,因为您可能希望根据单元格文本长度扩展或折叠列宽。所以我的想法是每次CellBeginEdit开始时,我们将AutoSizeMode设置为DisplayedCells,当CellEndEdit开始时,我们会在重置{{1}之前保存宽度(为您自动调整) }到AutoSizeMode,然后将列Width分配给该保存的值。这是我的代码:

None

我测试了代码,它似乎工作正常,有一种情况它不会起作用,因为我们不为这种情况添加代码,也就是当代码更改Cell值时。

我不得不说你想要的有点奇怪,我不太关心列的宽度,用户应该知道如何处理它。

答案 3 :(得分:0)

在我的一个应用程序中,我将autosize设置为显示的单元格。然后,一旦加载表单,我关闭自动调整大小以允许用户进行大小调整。

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;
    }

答案 4 :(得分:0)

在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