visual net insertar datos combo agregar vb.net combobox

vb.net - net - Comportamiento de ComboBox impar en el cambio de tamaño



insertar datos en combobox vb net (3)

Tengo un problema donde un control ComboBox cambiará su valor de texto cuando se cambie de tamaño. Aquí hay un código de muestra que he trabajado:

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

Tenga en cuenta que este formulario (FMain) tiene un solo cuadro combinado (uxComboBox) que está acoplado a la parte superior. Cuando ejecuto el código, veo que el combobox tiene un valor de "6", que es lo que esperaría. Cuando cambio el tamaño del formulario, el cuadro combinado obtiene un valor de "6 9/16", que es lo que NO esperaba.

¿Alguien sabe por qué pasa esto? ¿Alguna solución alternativa sugerida?

¡Gracias!

Stephen


Cuando se carga el formulario, se ejecuta ComboTest , y ve un ''6'', sin embargo, cuando ComboTest tamaño, no muestra los datos nuevos, parece que necesita actualizar el cuadro combinado, independientemente del tamaño o no.

Pruebe uxComboBox.Refresh() inmediatamente después de la línea uxComboBox.Items.AddRange .

Y después de la línea ''ComboTest'', establezca el índice seleccionado a 0 uxComboBox.Index = 0 también.

Espero que esto ayude, Saludos, Tom.


Sí, este es un error conocido en la implementación nativa de Windows de ComboBox. Hay otro aspecto de este error. Pon un botón en tu formulario y dale TabIndex = 0, cambia el TabIndex del CB a 1. Ejecútalo, el botón tendrá el foco. Cambiar el tamaño Tenga en cuenta que el texto de ComboBox cambia como antes, pero ahora también se resalta, como si tuviera el foco. Aunque no lo ha hecho.

Creo que este error ha estado presente desde Vista, pero no se corrigió en Win7. No hay solución conocida para eso.


Estoy usando Windows 10 y Visual Studio 2017. Parece que este error aún persiste. Con la respuesta de Hans Passant anterior, trabajé alrededor del problema de esta manera.

Tenía un combo como control anclado a la izquierda y a la derecha, por lo que se extendía cuando se expandía el formulario. Cuando la pantalla se expandió, el texto del cuadro combinado se resaltó como si tuviera el foco aunque no lo haya hecho.

Como un trabajo, tomé uno de los anclajes y lo agregué al cuadro de texto que estaba al lado. Ahora mi cuadro combinado no se expande con la pantalla, el cuadro de texto lo hace en su lugar. Sé que no es una solución para todos, pero puede ayudar a alguien en una situación similar a resolver el problema.