Itens no controle ComboBox não estiverem selecionados ao digitar os primeiros caracteres

Traduções deste artigo Traduções deste artigo
ID do artigo: 814362 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Você definir a propriedade DropDownStyle do controle ComboBox como DropDownList e digite os primeiros caracteres do item na caixa de combinação durante o tempo de execução. O item selecionado na ComboBox não coincide com os caracteres que você digita. O item selecionado na ComboBox baseia-se o último caractere digitado. Por exemplo, se os itens na caixa de combinação estiverem vermelho, Carvalho e rosa, quando você digita ro na caixa de combinação, o foco é Carvalho em vez de rosa.

Causa

Esse problema ocorre porque a pesquisa de ComboBox é baseada em um caractere em vez do conjunto de caracteres completa.

Como Contornar

Para contornar este problema, adicione o código que procura por itens com todos os caracteres digitados na caixa de combinação. O código também deve selecionar o item que tenha uma correspondência com todos os caracteres. Para limpar o texto de pesquisa em intervalos regulares, use um controle Timer. Para fazer isso, execute as seguintes etapas:
  1. No Microsoft Visual Studio .NET ou no Microsoft Visual Studio 2005, crie um novo Windows aplicativos usando o Visual Basic. NET, Visual Basic 2005 ou Visual translation from VPE for Csharp. NET.

    Por padrão, é criado o Form1.
  2. Da caixa de ferramentas, arraste um Timer para Form1.
  3. Na janela Properties, defina Enabled propriedade como True.
  4. Adicione a seguinte instrução à seção Declaração de variável do código:

    Visual Basic .NET ou Visual Basic 2005
    Dim searchstr As String
    O Visual translation from VPE for Csharp .NET
    string searchstr;
  5. Adicione o seguinte código ao evento Load do Form1:

    Visual Basic .NET ou Visual Basic 2005
    'set the timer interval and start the timer
    Timer1.Interval = 1000
    Timer1.Start()
    O Visual translation from VPE for Csharp .NET
    //set the interval  and start the timer
    timer1.Interval =1000;
    timer1.Start();
  6. Adicione o seguinte código ao evento Tick de Timer1:

    Visual Basic .NET ou Visual Basic 2005
    'empty the string for every 1 seconds
    searchstr = ""
    O Visual translation from VPE for Csharp .NET
    //empty the string for every 1 seconds
    searchstr="";
  7. Adicione o seguinte código ao evento KeyUp do ComboBox1:

    Visual Basic .NET ou 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 .NET translation from VPE for Csharp
             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;
             }

Situação

Esse comportamento é próprio do projeto.

Mais Informações

Passos para reproduzir o problema

  1. No Microsoft Visual Studio .NET ou no Microsoft Visual Studio 2005, crie um novo Windows aplicativos usando o Visual Basic. NET, Visual Basic 2005 ou Visual translation from VPE for Csharp. NET.

    Por padrão, é criado o Form1. Observação você deve alterar o código do Visual Basic 2005. Por padrão, o Visual Basic cria dois arquivos para o projeto ao criar um projeto Windows Forms. Se o formulário é denominado Form1, os dois arquivos representam o formulário são chamados de Form1.vb e Form1.Designer.vb. Escrever o código no arquivo Form1.vb. O Windows Forms Designer escreve o código no arquivo Form1.Designer.vb. O Windows Forms Designer usa a palavra-chave partial para dividir a implementação de Form1 em dois arquivos separados. Esse comportamento impede que o código gerado pelo designer sendo intercalados com o seu código.

    Para obter mais informações sobre os novos aprimoramentos de linguagem do Visual Basic 2005, visite o seguinte site da Microsoft Developer Network (MSDN):
    http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
    Para obter mais informações sobre classes parciais e o Windows Forms Designer, visite o seguinte site da MSDN:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  2. Da caixa de ferramentas, arraste uma ComboBox para Form1.
  3. Clique com o botão direito do mouse ComboBox1 e, em seguida, clique em Propriedades.
  4. Na janela Properties, clique para selecionar DropDownStyle e, em seguida, defina a propriedade como DropDownList.
  5. Na janela Properties, clique para selecionar itens e, em seguida, clique no botão de reticências (...).
  6. Na String Collection Editor, digite vermelho, Carvalho e rosa em linhas diferentes e, em seguida, clique em OK.
  7. No menu Debug, clique em Iniciar para executar o aplicativo.
  8. Digite as linhas regularesComboBox1.

Referências

Para obter mais informações, visite o seguinte site da MSDN:

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

Propriedades

ID do artigo: 814362 - Última revisão: sexta-feira, 11 de maio de 2007 - Revisão: 2.8
A informação contida neste artigo aplica-se 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
Palavras-chave: 
kbmt kbvs2005swept kbvs2005applies kbctrl kbcontrol kbproperties kbdisplay kbwindowsforms kbcombobox kbprb KB814362 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 814362

Submeter comentários

 

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