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

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
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 timerTimer1.Interval = 1000Timer1.Start()
    O Visual translation from VPE for Csharp .NET
    //set the interval  and start the timertimer1.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 secondssearchstr = ""
    O Visual translation from VPE for Csharp .NET
    //empty the string for every 1 secondssearchstr="";
  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): Para obter mais informações sobre classes parciais e o Windows Forms Designer, visite o seguinte site da MSDN:
  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

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 814362 - Última Revisão: 05/11/2007 07:08:50 - Revisão: 2.8

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

  • kbmt kbvs2005swept kbvs2005applies kbctrl kbcontrol kbproperties kbdisplay kbwindowsforms kbcombobox kbprb KB814362 KbMtpt
Comentários