Los elementos del control ComboBox no están seleccionados mientras escribe los primeros caracteres

Seleccione idioma Seleccione idioma
Id. de artículo: 814362 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Establezca la propiedad DropDownStyle del control ComboBox a DropDownList y, a continuación, escriba los primeros caracteres del elemento en ComboBox durante el tiempo de ejecución. El elemento seleccionado en ComboBox no coincide con caracteres que escriba. El elemento seleccionado en el ComboBox se basa en el último carácter que escriba. Por ejemplo, si los elementos de ComboBox son rojo, roble y rosa, cuando escribe ro en ComboBox, el foco está en roble en lugar de rosa.

Causa

Este problema se produce porque la búsqueda de ComboBox se basa en un carácter en lugar del conjunto de caracteres completa.

Solución

Para evitar este problema, agregue código que busca elementos con todos los caracteres que escribe en el control ComboBox. El código también debe seleccionar el elemento que se ajuste a todos los caracteres. Para borrar el texto de búsqueda a intervalos regulares, utilice un control Timer. Para ello, siga estos pasos:
  1. En Visual Studio.NET o Microsoft Visual Studio 2005, cree un nuevo Windows aplicación mediante Visual Basic. NET, Visual Basic 2005 o Visual C#. NET.

    De forma predeterminada, se crea Form1.
  2. Desde el cuadro de herramientas, arrastre un temporizador a Form1.
  3. En la ventana Propiedades, establezca Enabled en true.
  4. Agregue la instrucción siguiente a la sección de declaración de variable del código:

    Visual Basic .NET o Visual Basic 2005
    Dim searchstr As String
    Visual C# .NET
    string searchstr;
  5. Agregue el código siguiente al evento Load de Form1:

    Visual Basic .NET o Visual Basic 2005
    'set the timer interval and start the timer
    Timer1.Interval = 1000
    Timer1.Start()
    Visual C# .NET
    //set the interval  and start the timer
    timer1.Interval =1000;
    timer1.Start();
  6. Agregue el código siguiente al evento Tick de Timer1:

    Visual Basic .NET o Visual Basic 2005
    'empty the string for every 1 seconds
    searchstr = ""
    Visual C# .NET
    //empty the string for every 1 seconds
    searchstr="";
  7. Agregue el código siguiente al evento KeyUp del ComboBox1:

    Visual Basic .NET o Visual Basic 2005
          searchstr = searchstr & Chr(e.KeyValue)
          ' If the Search string is greater than 1 then use custom logic
          If searchstr.Length > 1 Then
             Dim index As Integer
             ' Search the Item that matches the string typed
             index = ComboBox1.FindString(searchstr)
             ' Select the Item in the Combo
             ComboBox1.SelectedIndex = index
          End If  
    Visual C# .NET
             searchstr = searchstr + Convert.ToChar(e.KeyCode);
             // If the Search string is greater than 1 then use custom logic
             if (searchstr.Length > 1)
             {
                int index;
                // Search the Item that matches the string typed
                index=comboBox1.FindString(searchstr);
                // Select the Item in the Combo
                comboBox1.SelectedIndex=index;
             }

Estado

Este comportamiento es por diseño.

Más información

Pasos para reproducir el comportamiento

  1. En Visual Studio.NET o Microsoft Visual Studio 2005, cree un nuevo Windows aplicación mediante Visual Basic. NET, Visual Basic 2005 o Visual C#. NET.

    De forma predeterminada, se crea Form1. Nota debe cambiar el código en Visual Basic 2005. De forma predeterminada, Visual Basic crea dos archivos para el proyecto cuando se crea un proyecto de formularios Windows Forms. Si el formulario se denomina Form1, los dos archivos que representan el formulario se denominan Form1.vb y Form1.Designer.vb. Escribir el código en el archivo Form1.vb. El Diseñador de Windows Forms escribe el código en el archivo Form1.Designer.vb. El Diseñador de Windows Forms se utiliza la palabra clave partial para dividir la implementación de Form1 en dos archivos independientes. Este comportamiento impide que el código generado por diseñador se mezcle con el código suyo.

    Para obtener más información acerca de las nuevas mejoras del lenguaje Visual Basic 2005, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
    http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
    Para obtener más información acerca de las clases parciales y el Diseñador de Windows Forms, visite el siguiente sitio Web de MSDN:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  2. Desde el cuadro de herramientas, arrastre un control ComboBox a Form1.
  3. Haga clic con el botón secundario del mouse en ComboBox1 y, a continuación, haga clic en Propiedades.
  4. En la ventana Propiedades, haga clic para seleccionar DropDownStyle y, a continuación, establezca la propiedad en DropDownList.
  5. En la ventana Propiedades, haga clic para seleccionar elementos y, a continuación, haga clic en el botón de puntos suspensivos (...).
  6. En el Editor de la colección de cadenas, escriba rosa, rojo y roble en líneas diferentes y, a continuación, haga clic en Aceptar.
  7. En el menú Depurar, haga clic en Inicio para ejecutar la aplicación.
  8. Escriba las roComboBox1.

Referencias

Para obtener más información, visite el siguiente sitio Web MSDN:

Propiedad ComboBox.DropDownStyle
http://msdn2.microsoft.com/en-us/library/system.windows.forms.combobox.dropdownstyle(vs.71).aspx

Propiedades

Id. de artículo: 814362 - Última revisión: viernes, 11 de mayo de 2007 - Versión: 2.8
La información de este artículo se refiere a:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Palabras clave: 
kbmt kbvs2005swept kbvs2005applies kbctrl kbcontrol kbproperties kbdisplay kbwindowsforms kbcombobox kbprb KB814362 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 814362

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com