在为 winform中,listBox的行间距默认太紧凑,如果要调整,还是比较麻烦的。笔者查询了多种方法,现总结如下。需要两个事件,一个是DrawItem ,另一个是MeasureItem。还需要把listBox的drawMode属性设置为OwerDrawFixed, 即手动模式。
‘重新绘制listBox的条目
Private Sub ListBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ListBox1.DrawItem
e.DrawBackground()
e.DrawFocusRectangle()
Dim difH = (e.Bounds.Height - e.Font.Height) / 2
'指定绘制文本的位置
Dim rf As RectangleF = New RectangleF(e.Bounds.X, e.Bounds.Y + difH, e.Bounds.Width, e.Font.Height)
'绘制指定的字符串
e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), e.Font, New SolidBrush(Color.Black), rf)
'e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), e.Font, New SolidBrush(e.ForeColor), e.Bounds)
End Sub
’衡量listBox条目的高度
Private Sub ListBox1_MeasureItem(sender As Object, e As MeasureItemEventArgs) Handles ListBox1.MeasureItem
e.ItemHeight = 50
End Sub