[英]Autosize Rows for Datagridview in VB.net not working
嗨,我正在使用数据库中的动态数据制作备忘录类型的数据网格,但不知何故我无法使行自动调整大小。 我几乎尝试了一切,这是我放在 Form Load sub 上的一些代码片段:
DataGridView2.Columns(0).AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
DataGridView2.Columns(1).AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
DataGridView2.Columns(2).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
DataGridView2.Columns(2).DefaultCellStyle.WrapMode = DataGridViewTriState.True
DataGridView2.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders
结果是这样的:
之后我尝试在 DataGridView2.CellPainting 事件上使用它
If e.Value Is Nothing Then Return
Dim s = e.Graphics.MeasureString(e.Value.ToString(), DataGridView2.Font)
If s.Width > DataGridView2.Columns(e.ColumnIndex).Width Then
Using gridBrush As Brush = New SolidBrush(DataGridView2.GridColor), backColorBrush As Brush = New SolidBrush(e.CellStyle.BackColor)
Using gridLinePen As Pen = New Pen(gridBrush)
e.Graphics.FillRectangle(backColorBrush, e.CellBounds)
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom - 1, e.CellBounds.Right, e.CellBounds.Bottom - 1)
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1, e.CellBounds.Top, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1)
e.Graphics.DrawString(e.Value.ToString(), DataGridView2.Font, Brushes.Black, e.CellBounds, StringFormat.GenericDefault)
DataGridView2.Rows(e.RowIndex).Height = CInt((s.Height * Math.Ceiling(s.Width / DataGridView2.Columns(e.ColumnIndex).Width)))
e.Handled = True
End Using
End Using
End If
结果是这样的:
尝试摆弄所有属性,但我似乎无法弄清楚,提前谢谢你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.