Si, ma non so se il mio metodo sia quello "giusto"...ho iniziato da poco a studiare la ComboBox per creare un controllo "particolare"...
Imposta la proprietà DrawMode:
codice:
ComboBox1.DrawMode = DrawMode.OwnerDrawVariable
poi scrivi:
codice:
Private Sub ComboBox1_MeasureItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles ComboBox1.MeasureItem
If ComboBox1.DropDownWidth < e.Graphics.MeasureString(ComboBox1.Items(e.Index), New Font(ComboBox1.Font, ComboBox1.Font.Size)).Width Then
ComboBox1.DropDownWidth = e.Graphics.MeasureString(ComboBox1.Items(e.Index), New Font(ComboBox1.Font, ComboBox1.Font.Size)).Width + 20
End If
End Sub
Private Sub ComboBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
e.DrawBackground()
e.Graphics.DrawString(ComboBox1.Items(e.Index), ComboBox1.Font, New SolidBrush(ComboBox1.ForeColor), New RectangleF(e.Bounds.Location, e.Bounds.Size))
End Sub
In pratica, in base al Font viene misurato l' aspetto grafico di ogni elemento della ComboBox e di conseguenza si imposta la larghezza della DropDown. Il "+ 20" è messo ad "occhio" perchè non so come ottenere la larghezza della scrollbar...
Forse il codice non è molto leggibile perchè mi sono messo in testa di non usare variabili superflue...se vuoi approfondire ho preso spunto da questi link:
http://msdn.microsoft.com/it-it/libr...v=vs.100).aspx
http://msdn.microsoft.com/it-it/libr...v=vs.100).aspx