Нечетное поведение ComboBox на изменяет размер

У меня есть проблема, где управление ComboBox изменится, это - текстовое значение, когда это изменено. Вот некоторый пример кода, который я обработал:


Option Explicit On  
Option Strict On

Public Class FMain  
    Private Sub FMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load  
        uxComboBox.DropDownStyle = ComboBoxStyle.DropDown  
        uxComboBox.AutoCompleteSource = AutoCompleteSource.ListItems  
        uxComboBox.AutoCompleteMode = AutoCompleteMode.Suggest  

        ComboTest()  
    End Sub  

    Private Sub ComboTest()  
        Dim value As String = "6"  

        uxComboBox.Text = String.Empty  
        uxComboBox.Items.Clear()  

        uxComboBox.Items.AddRange(New String() {"4 9/16", "6 9/16", "7 9/16", "8 9/16"})  

        Dim index As Integer = uxComboBox.FindStringExact(value)  
        If uxComboBox.SelectedIndex  index Then  
            uxComboBox.SelectedIndex = index  
        End If  

        If uxComboBox.SelectedIndex = -1 AndAlso _
           Not String.Equals(uxComboBox.Text, value, StringComparison.OrdinalIgnoreCase) Then  
            uxComboBox.Text = value  
        End If  

        ' unselect the text in the combobox  
        '  
        uxComboBox.Select(0, 0)  
    End Sub  
End Class  

Обратите внимание, что эта форма (FMain) имеет единственное поле комбинированного списка на нем (uxComboBox), который прикрепляется с вершиной. Когда я выполняю код, я вижу, что поле комбинированного списка имеет значение "6", который является тем, что я ожидал бы. Когда я затем изменяю размер формы, поле комбинированного списка получает значение "6 9/16", которое является тем, что я НЕ ожидал бы.

Кто-либо знает, почему это происходит? Какие-либо предложенные обходные решения?

Спасибо!

Stephen

6
задан StephenM 28 January 2010 в 00:28
поделиться

2 ответа

Да, это известная ошибка в родной Windows реализации ComboBox. Есть еще один аспект этой ошибки. Положите кнопку на форму и дайте ей TabIndex = 0, измените TabIndex CB на 1. Запустите его, кнопка будет иметь фокус. Изменить размер. Обратите внимание, что текст ComboBox изменяется, как и раньше, но теперь также выделяется, как будто он имеет фокус. Даже если это не так.

Я думаю, что эта ошибка существовала со времен Vista, она не была исправлена в Win7. Обходного пути для этого нет.

5
ответ дан 17 December 2019 в 04:46
поделиться

Когда форма загружается, ComboTest выполняется, и вы видите '6', однако, когда вы изменяете размер, она не показывает новые данные, звучит так, как будто вам нужно обновить комбо-бокс, независимо от размера или нет.

Попробуйте uxComboBox.Refresh() сразу после строки uxComboBox.Items.AddRange.

А после строки 'ComboTest' также установите выбранный индекс равным 0 uxComboBox.Index = 0.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

0
ответ дан 17 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: