VB.NET ComboBox - необходимо принудительно перерисовать, когда клавиша нажата, когда она опущена - PullRequest
1 голос
/ 23 июля 2010

Я использую события DrawItem и MeasureItem для рисования комбинированного списка с DrawMode of OwnerDrawVariable.

По сути, я пытаюсь, чтобы пользователь выделил выделение мышью, а затем нажимаю пробелпереключить статус сохранения списка песен.Затем я вызываю событие Me.Refresh () для формы, пытаясь перерисовать форму и ComboBox.

Проблема, с которой я сталкиваюсь, заключается в том, что только сам Combobox (не выпадающая область)) элемент управления в главной форме перерисовывается, и текст, который находится за выделенным мышью выделением раскрывающегося списка, не меняется с красного на черный, как мне кажется, должен.Если я наведу указатель мыши на другое выделение, цвет фактически обновится.

Вот фрагмент кода.

    If (e.KeyCode = Keys.Space) Then
        If cmbList.SelectedItem IsNot Nothing Then
            With DirectCast(cmbList.SelectedItem, SongTitle)
                .bSave = Not .bSave
            End With
        End If
    End If

    e.Handled = True

    Me.Refresh()

Спасибо за любую помощь, которую вы можете предоставить.

1 Ответ

1 голос
/ 25 июля 2010

Вам нужно использовать .RefreshItem / .RefreshItems вместо .Refresh.

См. Этот вопрос: Динамическое изменение текста элементов в Winforms ComboBox

...