我有一个带有三列的vb.net组合框。 如何让e.bounds更宽广?我想设置组合框的下拉列表 比实际的组合框更宽。
我使用了以下代码:
Private Sub BlokKiesCMB_DrawItem(ByVal sender As
System.Object, ByVal e As
System.Windows.Forms.DrawItemEventArgs)
Handles BlokKiesCMB.DrawItem
' Draw the default background
e.DrawBackground()
' The ComboBox is bound to a DataTable,
' so the items are DataRowView objects.
Dim drv As DataRowView = CType(BlokKiesCMB.Items(e.Index), DataRowView)
' Retrieve the value of each column.
Dim blokno As String = drv("blokno").ToString()
Dim kultivar As String = drv("kultivar").ToString()
Dim klas As String = drv("klas").ToString()
' Get the bounds for the first column
Dim r1 As Rectangle = e.Bounds
r1.Width = r1.Width / 3
' Draw the text on the first column
Using sb As SolidBrush = New SolidBrush(e.ForeColor)
e.Graphics.DrawString(blokno, e.Font, sb, r1)
End Using
' Draw a line to isolate the columns
Using p As Pen = New Pen(Color.Black)
e.Graphics.DrawLine(p, r1.Right, 0, r1.Right, r1.Bottom)
End Using
' Get the bounds for the second column
Dim r2 As Rectangle = e.Bounds
r2.X = e.Bounds.Width / 3
r2.Width = r2.Width / 3
' Draw the text on the second column
Using sb As SolidBrush = New SolidBrush(e.ForeColor)
e.Graphics.DrawString(kultivar, e.Font, sb, r2)
End Using
' Draw a line to isolate the columns
Using p As Pen = New Pen(Color.Black)
e.Graphics.DrawLine(p, r2.Right, 0, r2.Right, r2.Bottom)
End Using
' Get the bounds for the third column
Dim r3 As Rectangle = e.Bounds
r3.X = r2.Width + r2.X
r3.Width = r3.Width / 3
' Draw the text on the third column
Using sb As SolidBrush = New SolidBrush(e.ForeColor)
e.Graphics.DrawString(klas, e.Font, sb, r3)
End Using
End Sub
答案 0 :(得分:1)
e.Bounds
不会向您提供ComboBox
或其DropDown
框的旁边。 Bounds
指的是ComboBox
相对于其父级的位置。请阅读this以获取进一步参考。
现在,WinForms
ComboBox
有一个名为DropDownWidth
的属性,可让您控制DropDown
宽度超过实际ComboBox
&#39 ;宽度。默认情况下,此属性设置为与ComboBox
宽度相同的值。
以下是实际示例,ComboBox
的大小为121,默认情况下,DropDown
框的大小也为121。
但是如果你改变DropDownWidth
(说,到200)
Me.ComboBox1.DropDownWidth = 200 'change this
这就是你要获得的
ComboBox
下拉框变宽了。