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.