Форматирование ComboBox на основе длины строки - PullRequest
1 голос
/ 18 октября 2011

Я пытаюсь отформатировать длину DataGridViewComboBoxColumn на основе длины самой длинной строки в поле со списком.Вот код, который у меня есть в настоящее время, но он только форматирует DataGridViewComboBoxColumn на основе предыдущего выбора пользователя в comboBox.

Есть ли способ получить DataGridViewComboBoxColumn длиной самой длинной строки в comboBox?1003 *

Вот мой код:

Private Sub comboTest_SelectionChangeCommitted(ByVal sender As Object, ByVal e As EventArgs) Handles comboTest.SelectionChangeCommitted

    Dim senderComboBox As ComboBox = CType(sender, ComboBox)

    'Change the length of the text box depending on what the user has
    'selected and committed using the SelectionLength property.
    If (comboTest.SelectionLength > 0) Then
        comboTest.Width = comboTest.SelectionLength * CType(Me.comboTest.Font.SizeInPoints, Integer)
        comboTest.SelectedValue = comboTest.SelectedText
    End If
End Sub

Ответы [ 2 ]

4 голосов
/ 18 октября 2011

Похоже, вам просто нужно вычислить самую длинную строку в ComboBox.Предполагая, что это просто набор отображаемых String значений, вы можете сделать следующее:

Dim length = 0
For Each item As String in comboTest.Items 
  length = Max(length, item.Length)
Next

If length > 0 Then
  comboTest.Width = length * CType(Me.comboTest.Font.SizeInPoints, Integer)
  comboTest.SelectedValue = comboTest.SelectedText
End If
1 голос
/ 27 ноября 2013
Dim length = 0
Dim maxlength = 0
Dim i As Integer = 0
Dim g As Graphics = ComboBox2.CreateGraphics
Dim stringsize As New SizeF

For i = 0 To ComboBox2.Items.Count - 1
    ComboBox2.SelectedIndex = i
    stringsize = g.MeasureString((ComboBox2.GetItemText(ComboBox2.Items(i))), ComboBox2.Font)
    length = stringsize.Width
    If length > maxlength Then
        maxlength = length
    End If
Next i

Me.ComboBox2.Width = maxlength
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...