告诉DataGridView自定义绘画不适合单元格

时间:2019-09-09 10:03:28

标签: winforms datagridview cell customization paint

我绘制单元格的内容,例如图标和文本。如果文本不适合单元格边界,则将其用省略号绘制。如何告诉DataGridView单元需要更多空间来处理正确的自动调整大小?

1 个答案:

答案 0 :(得分:0)

[定制基于内容的大小调整行为](定制基于内容的大小调整行为)中提供了各种选项;我建议您重写DataGridViewCell.GetPreferredSize Method,以将自定义单元格大小数据提供给特定的DataGridViewColumn的CellTemplate Property

由于您尚未详细说明特定的设计条件,因此我将假定DataGridViewColumn为DataGridViewTextBoxColumn

自定义单元格定义将类似于以下内容。

Public Class CustomSizedTextBoxCell : Inherits DataGridViewTextBoxCell

  Protected Overrides Function GetPreferredSize(graphics As Graphics, cellStyle As DataGridViewCellStyle, rowIndex As Int32, constraintSize As Size) As Size
    Dim ret As Size = MyBase.GetPreferredSize(graphics, cellStyle, rowIndex, constraintSize)
    ' this simple example just doubles the width of the base preferred size
    ' replace this with logic that satifies your requirements
    ret.Width *= 2
    Return ret
  End Function

End Class

使用此自定义单元格的方式:

DataGridView1.Columns(0).CellTemplate = New CustomSizedTextBoxCell()