【问题标题】:Datagridview's row autoresizeDatagridview 的行自动调整大小
【发布时间】:2012-11-12 00:02:01
【问题描述】:

我正在尝试自动调整行高,我发现它非常具有挑战性。

我已经设置了这个属性:

DataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells.

我也用这种其他方法做到了:

DataGridView.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders)

还可以逐行使用:

DataGridView.AutoResizeRow(i, DataGridViewAutoSizeRowMode.AllCells)

甚至还将行的高度硬编码为一个很大的值,但它也不起作用!所有行都以其默认高度显示。

这些都不起作用。我的选项不多了。

datagridview 中的大多数行不需要调整大小。但其中一个充满了像这样的值:

“a”+“\n”+b+“\n”+“c”+“\n”+“d”+“\n”+“e”

我的意思是,短值但在不同的行中。我必须以不同的方式显示它们,不能将它们全部显示在一起。 但是 datagridview 只显示第一个,而所有其他的都被隐藏了,因为该行不会自动调整大小。

任何其他方法的想法。

【问题讨论】:

    标签: .net datagridview rows autoresize


    【解决方案1】:

    你正在尝试的不会奏效。 您需要将 AutoSizeMode 设置为“无”,然后更改列的宽度。 如果您手动设置列,效果会更好,因为我假设您已经知道您拥有哪些列。

    【讨论】:

      【解决方案2】:

      我已经找到了解决这个问题的方法。 而不是使用网格或行的自动调整大小属性,我应该使用 wrapmode 来应用于所有网格的单元格。

      DataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.True

      这适用于所有单元格并且有效。

      【讨论】:

      • 很高兴您找到了解决方案(我假设您已经设置了 wrapmode 并且看到多行溢出网格单元区域)。我将留下我的答案,因为它对于不同的问题是正确的(如果您更新任何增加数据长度的单元格,调整大小不会自动触发)。
      • 哦 - 并将其标记为答案,以便问题从未回答列表中删除。
      【解决方案3】:

      您需要在数据更改后调用resize 方法。来自 DataGridView.AutoResizeRows() 上的 MSDN 文章:

      每个方法调用只调整一次行高;如果 以后行的内容发生变化,行不会自动 调整。

      这意味着您需要在第一次和任何后续加载网格之后调用该方法。如果您在父表单的控制器中调用此代码,则数据绑定尚未发生,因此数据不存在。

      对于使用DataBindingComplete 事件的第一次加载:

      dataGridView1.DataBindingComplete += new
          DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);
      
      void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
      {
          dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
      }
      

      对于以后对单元格的更新,您需要自己找到最佳位置。

      【讨论】:

      • 当前方法不起作用的原因可能是您的代码在表单构造函数或 onload 事件中。
      • 不,我实际上是在将gridsource设置为datagridview之后才这样做的。它已经人满为患了。这是我做的最后一件事。
      • @user1062568 你什么时候做的?在什么事件处理程序中?即使你在设置了源之后再做,那还不够,你必须在数据绑定完成之后再做。例如,如果你设置了源,然后在表单构造函数中调用 resize all,这不会改变高度。
      • 我是在网格准备好之后做的。我实际上是使用 Rows.Add() 逐行添加。所以,不需要绑定。无论如何,我找到了使用另一个属性的解决方案。无论如何感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 2019-09-06
      • 2011-04-26
      • 2011-01-19
      相关资源
      最近更新 更多