在datagridview中,有一列启用了wordwrap。将AutoSizeRowsMode设置为None以外的任何值都会导致网格需要很长时间才能填充。无论是10行还是100行,是绑定的还是未绑定的。我的网格是未绑定的。我想遍历行,并根据换行列中文本的长度计算每行的行高。如何计算自动换行生成的行数?或者我可以使用文本的长度,然后根据其他变量计算行高?
其他帖子建议使用DataGridViewAutoSizeRowsMode.DisplayedCells。这没什么用。
发布于 2019-07-09 23:34:37
Dim strTemp As String
Dim szTemp As SizeF
Dim intLineHeight As Int32
Dim gphicsTemp As Graphics
gphicsTemp = Graphics.FromHwnd(Me.Handle)
Dim baselineSize As SizeF = gphicsTemp.MeasureString("SAMPLE ROW", dgvDeals.Font)
Dim intPadding As Int32 = 6
For Each dgvrTemp In dgvDeals.Rows
If dgvrTemp.Cells("CD_DESCRIPTION").Value.ToString.Trim <> "" Then
strTemp = dgvrTemp.Cells("CD_DESCRIPTION").Value.ToString
szTemp = gphicsTemp.MeasureString(strTemp, dgvDeals.Font, dgvrTemp.Cells("CD_DESCRIPTION").Size.Width)
intLineHeight = Math.Round((szTemp.Height / baselineSize.Height))
dgvrTemp.Height = (Math.Round(baselineSize.Height) * intLineHeight) + intPadding
End If
Next发布于 2019-09-05 20:17:08
最简单的方法是使用GetPreferredHeight
For iRow As Int32 = 0 To dgvItems.Rows.Count - 1
dgvItems.Rows(iRow).Height =
dgvItems.Rows(iRow).GetPreferredHeight(iRow, DataGridViewAutoSizeRowMode.AllCells, True)
Nexthttps://stackoverflow.com/questions/56943288
复制相似问题