Отображение списка цветов и их названий в поле со списком - PullRequest
0 голосов
/ 26 мая 2020

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

Проект написан в c#. Я не понимаю c#, поэтому преобразовал коды в vb. net, как показано ниже.

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim ColorList As ArrayList = New ArrayList()
    Dim colorType As Type = GetType(System.Drawing.Color)
    Dim propInfoList As PropertyInfo() = colorType.GetProperties(BindingFlags.[Static] Or BindingFlags.DeclaredOnly Or BindingFlags.[Public])

    For Each c As PropertyInfo In propInfoList
        ComboBox1.Items.Add(c.Name)
    Next
End Sub

Private Sub Combobox1_DrawItem(ByVal sender As Object, ByVal e As DrawItemEventArgs) Handles ComboBox1.DrawItem
    Dim g As Graphics = e.Graphics
    Dim rect As Rectangle = e.Bounds

    If e.Index >= 0 Then
        Dim n As String = (CType(sender, ComboBox)).Items(e.Index).ToString()
        Dim f As Font = New Font("Arial", 9, FontStyle.Regular)
        Dim c As Color = Color.FromName(n)
        Dim b As Brush = New SolidBrush(c)
        g.DrawString(n, f, Brushes.Black, rect.X, rect.Top)
        g.FillRectangle(Brushes.Blue, rect.X + 110, rect.Y + 5, rect.Width - 10, rect.Height - 10)
    End If
End Sub

Когда я выполняю приведенный выше код, в поле со списком Combobox1 отображаются элементы только с названиями цвета. Цветные прямоугольники не отображаются так, как показано в проекте, который я привел выше.
Почему прямоугольники не отображаются?
Я пробовал установить Combobox1 s DrawMode для всех доступных DrawModes. Ничего не сработало.

Обратите внимание: я использовал преобразователь кода Telerik , чтобы преобразовать код c# в vb. net код.

...