多列组合框更改宽度

时间:2016-01-07 00:21:36

标签: vb.net combobox

我有一个带有三列的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

1 个答案:

答案 0 :(得分:1)

e.Bounds不会向您提供ComboBox或其DropDown框的旁边。 Bounds指的是ComboBox相对于其父级的位置。请阅读this以获取进一步参考。

现在,WinForms ComboBox有一个名为DropDownWidth的属性,可让您控制DropDown宽度超过实际ComboBox&#39 ;宽度。默认情况下,此属性设置为与ComboBox宽度相同的值。

以下是实际示例,ComboBox的大小为121,默认情况下,DropDown框的大小也为121。

enter image description here

但是如果你改变DropDownWidth(说,到200)

Me.ComboBox1.DropDownWidth = 200 'change this

这就是你要获得的

enter image description here

ComboBox下拉框变宽了。

相关问题