Раскрывающийся список в выпадающем списке без специальных символов - PullRequest
0 голосов
/ 03 апреля 2019

Нечетное поведение Combobox Я заполняю элементы в Combobox названиями городов, содержащими специальные символы.В раскрывающемся списке они не отображаются должным образом, но когда я выбираю один, он отображается правильно

ОБНОВЛЕНИЕ 4: Это странная проблема шрифта с ComboBox (см. Комментарии)

ОРИГИНАЛЬНАЯ ПОЧТА:

Вот так я заполняю Combobox из XML-файла:

Public Shared Sub PopulateCities()
    Dim strPath As String = System.IO.Path.GetDirectoryName(
        System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
    Dim ds As New DataSet
    Dim i As Integer
    ds.InferXmlSchema(Strings.Mid(strPath, 7) + "/cities.xml", Nothing)
    ds.ReadXml(Strings.Mid(strPath, 7) + "/cities.xml")
    If ds.Tables.Count > 0 Then
        Dim a As String
        For i = 0 To ds.Tables(0).Rows.Count - 1
            a = ds.Tables(0).Rows(i).Item("NOME")
            MainForm.LocationBox.Items.Add(a)
        Next
    End If
End Sub

Элементы в списке должны отображаться так же, как текущий элемент в Combobox.

ОБНОВЛЕНИЕ:

При переключении на системный шрифт проблема не появляется, но мне нужно использовать свой собственный шрифт. ComboBox с использованием системного шрифта

Шрифт назначается программно следующим образом:

  Public Shared pfc As PrivateFontCollection = New PrivateFontCollection()
  Dim strPath As String = System.IO.Path.GetDirectoryName(
            System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
  REM Loading Font files
        pfc.AddFontFile(Strings.Mid(strPath, 7) & "\magickfont.ttf")

  SetMagickFont(LocationBox)

  Public Sub SetMagickFont(obj As Object)
        Dim s As Single = obj.font.size
        Dim fs As FontStyle = obj.font.style
        obj.font = New Font(pfc.Families(0), s, fs)
        obj.invalidate
    End Sub

ОБНОВЛЕНИЕ 2:

Сохранение моего шрифта и добавление

MainForm.LocationBox.Items.Add("Zürich åäö")

Получает тот же нечетный результат. Добавление элемента в ComboBox вручную

...