Erro: Mensagem de erro quando você usa o método FindString ou o método FindStringExact no Visual Basic .NET ou no Visual .NET translation from VPE for Csharp: "System.ArgumentOutOfRangeException"

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: 820634
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
No Visual Basic .NET ou no Visual translation from VPE for Csharp. NET, você pode chamar o método de FindString dois argumento sobrecarregado ou o método de FindStringExact dois argumento sobrecarregado da classe ComboBox ou a classe de ListBox . No entanto, quando o parâmetro startIndex é igual ao valor de índice do último item da lista associada, você receberá a seguinte mensagem de erro:
Uma exceção sem tratamento do tipo 'System.ArgumentOutOfRangeException' ocorreu em system.windows.forms.dll
Obter informações adicionais: especificado argumento estava fora do intervalo de valores válidos.
Se você tratar essa exceção em um bloco Try/Catch, você receberá uma mensagem de erro semelhante à seguinte:
Exceção não tratada: System.ArgumentOutOfRangeException: especificado argumento estava fora do intervalo de valores válidos.
Nome do parâmetro: startIndex
em System.Windows.Forms.ListBox.FindStringExact (String s, Int32 startIndex)
em WindowsApplication1.Form1.Button1_Click (objeto remetente, EventArgs e) em %Form Path% \ Form Name: linha 83
Observação Form Name é um espaço reservado para o nome de arquivo do formulário que contém o objeto de caixa de combinação ou o objeto ListBox que chama o método FindString ou o método FindStringExact . Além disso, %Form Path% é um espaço reservado para o caminho do formulário mencionado anteriormente.
Causa
Quando você chamar o método de FindString dois argumento ou o método de FindStringExact argumento dois, um parâmetro startIndex é usado. Esse parâmetro startIndex pode ser igual ao valor de índice do último item da lista associada para um objeto ComboBox ou um objeto ListBox . Em tais casos, o método chamado deve para iniciar a pesquisa do início da lista para a seqüência que é passada como o primeiro parâmetro. No entanto, o método chamado incorretamente inicia a pesquisa após o último item da lista. Portanto, é ultrapassado o limite de lista durante a pesquisa e você receber a mensagem de erro em "Sintomas" seção.
Como Contornar
Para contornar esse bug, passe 0 como o startIndex parâmetro para o método de FindString dois argumento ou o método de FindStringExact dois argumento. Você também pode usar o método de FindString um argumento ou o método de FindStringExact um argumento em vez dos métodos dois argumento correspondentes.

Para contornar esse problema, execute estas etapas:

Observação Essas etapas são para o exemplo está em "Mais informações" seção.

passando 0 como o parâmetro StartIndex
  1. Execute o Visual Basic. NET. Abra Form1.vb e, em seguida, substitua
    ReturnedIndex = ListBox1.FindString("One", 3)
    com o seguinte código:
    ReturnedIndex = ListBox1.FindString("One", 0)
    executar Visual translation from VPE for Csharp. NET. Abra Form1.cs e, em seguida, substitua
    ReturnedIndex = listBox1.FindString("One", 3);
    com o seguinte código:
    ReturnedIndex = listBox1.FindString("One", 0);
  2. No Visual Basic. NET, substitua
    ReturnedIndex = ListBox1.FindStringExact("One", 3)
    com o seguinte código:
    ReturnedIndex = ListBox1.FindStringExact("One", 0)
    In Visual translation from VPE for Csharp. NET, substituir
    ReturnedIndex = listBox1.FindStringExact("One", 3);
    com o seguinte código:
    ReturnedIndex = listBox1.FindStringExact("One", 0);
  3. No Visual Basic. NET, substitua
    ReturnedIndex = ComboBox1.FindString("One", 3)
    com o seguinte código:
    ReturnedIndex = ComboBox1.FindString("One", 0)
    In Visual translation from VPE for Csharp. NET, substituir
    ReturnedIndex = comboBox1.FindString("One", 3);
    com o seguinte código:
    ReturnedIndex = comboBox1.FindString("One", 0);
  4. No Visual Basic. NET, substitua
    ReturnedIndex = ComboBox1.FindStringExact("One", 3)
    com o seguinte código:
    ReturnedIndex = ComboBox1.FindStringExact("One", 0)
    In Visual translation from VPE for Csharp. NET, substituir
    ReturnedIndex = comboBox1.FindStringExact("One", 3);
    com o seguinte código:
    ReturnedIndex = comboBox1.FindStringExact("One", 0);
  5. No menu Debug , clique em Iniciar para executar o aplicativo.

    Form1 é exibida.
  6. No Visual Basic. NET, clique em Button1 . No Visual translation from VPE for Csharp. NET, clique em button1 .

    Você recebe uma série de quatro caixas de mensagem com os valores de retorno dos métodos chamados.
  7. Clique em OK para fechar cada caixa de mensagem. A próxima caixa de mensagem automaticamente será exibida.
Observação Essas etapas sejam baseiam a amostra de "Mais informações" seção deste artigo. Portanto, o código e os nomes de arquivo nas etapas podem diferir do seu código e os nomes de arquivo.

usando os métodos de um argumento correspondente
  1. Execute o Visual Basic. NET. Abra Form1.vb e, em seguida, substitua
    ReturnedIndex = ListBox1.FindString("One", 3)
    com o seguinte código:
    ReturnedIndex = ListBox1.FindString("One")
    executar Visual translation from VPE for Csharp. NET. Abra Form1.cs e, em seguida, substitua
    ReturnedIndex = listBox1.FindString("One", 3);
    com o seguinte código:
    ReturnedIndex = listBox1.FindString("One");
  2. No Visual Basic. NET, substitua
    ReturnedIndex = ListBox1.FindStringExact("One", 3)
    com o seguinte código:
    ReturnedIndex = ListBox1.FindStringExact("One")
    In Visual translation from VPE for Csharp. NET, substituir
    ReturnedIndex = listBox1.FindStringExact("One", 3);
    com o seguinte código:
    ReturnedIndex = listBox1.FindStringExact("One");
  3. No Visual Basic. NET, substitua
    ReturnedIndex = ComboBox1.FindString("One", 3)
    com o seguinte código:
    ReturnedIndex = ComboBox1.FindString("One")
    In Visual translation from VPE for Csharp. NET, substituir
    ReturnedIndex = comboBox1.FindString("One", 3);
    com o seguinte código:
    ReturnedIndex = comboBox1.FindString("One");
  4. No Visual Basic. NET, substitua
    ReturnedIndex = ComboBox1.FindStringExact("One", 3)
    com o seguinte código:
    ReturnedIndex = ComboBox1.FindStringExact("One")
    In Visual translation from VPE for Csharp. NET, substituir
    ReturnedIndex = comboBox1.FindStringExact("One", 3);
    com o seguinte código:
    ReturnedIndex = comboBox1.FindStringExact("One");
  5. No menu Debug , clique em Iniciar para executar o aplicativo.

    Form1 é exibida.
  6. No Visual Basic. NET, clique em Button1 . No Visual translation from VPE for Csharp. NET, clique em button1 .

    Você recebe uma série de quatro caixas de mensagem com os valores de retorno dos métodos chamados.
  7. Clique em OK para fechar cada caixa de mensagem. A próxima caixa de mensagem automaticamente será exibida.
Observação Essas etapas sejam baseiam a amostra de "Mais informações" seção deste artigo. Portanto, o código e os nomes de arquivo nas etapas podem diferir do seu código e os nomes de arquivo.
Situação
A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.
Mais Informações

Etapas para reproduzir o problema

  1. Execute o Microsoft Visual Studio .NET. Criar um Windows projeto de aplicativo chamado FindStringDemo .

    Você pode usar Visual Basic .NET ou Visual translation from VPE for Csharp .NET.

    Por padrão, é criado o Form1 .
  2. Na caixa de ferramentas, clique duas vezes em ListBox .

    No Visual Basic. NET, ListBox1 é adicionada ao Form1. No Visual translation from VPE for Csharp. NET, Caixalistagem1 é adicionado ao Form1.
  3. No Visual Basic. NET, selecione ListBox1 . No Visual translation from VPE for Csharp. NET, selecione listBox1 . Na janela Properties , selecione as reticências (... ) para a propriedade Items exibir a caixa de diálogo Seqüências Collection Editor .
  4. Adicione o seguinte texto na caixa de texto Digite as seqüências de caracteres na coleção (um por linha) e clique em OK :
    OneTwoThreeFour
  5. Na caixa de ferramentas, clique duas vezes em ComboBox .

    No Visual Basic. NET, ComboBox1 é adicionada ao Form1. No Visual translation from VPE for Csharp. NET, comboBox1 é adicionado ao Form1.
  6. No Visual Basic. NET, selecione ComboBox1 . No Visual translation from VPE for Csharp. NET, selecione comboBox1 . Na janela Properties , selecione as reticências (... ) para a propriedade Items exibir a caixa de diálogo Seqüências Collection Editor .
  7. Adicione o seguinte texto na caixa de texto Digite as seqüências de caracteres na coleção (um por linha) e clique em OK :
    OneTwoThreeFour
  8. Na caixa de ferramentas, clique duas vezes em botão .

    No Visual Basic. NET, Button1 é adicionada ao Form1. No Visual translation from VPE for Csharp. NET, button1 é adicionado ao Form1.
  9. In Visual Basic .NET, add the following code to the Button1_Click event handler:
    Dim ReturnedIndex As IntegerTry   ReturnedIndex = ListBox1.FindString("One", 3)   MessageBox.Show(ReturnedIndex)Catch MyException As Exception   MessageBox.Show(MyException.ToString())End TryTry   ReturnedIndex = ListBox1.FindStringExact("One", 3)   MessageBox.Show(ReturnedIndex)Catch MyException As Exception   MessageBox.Show(MyException.ToString())End TryTry   ReturnedIndex = ComboBox1.FindString("One", 3)   MessageBox.Show(ReturnedIndex)Catch MyException As Exception   MessageBox.Show(MyException.ToString())End TryTry   ReturnedIndex = ComboBox1.FindStringExact("One", 3)   MessageBox.Show(ReturnedIndex)Catch MyException As Exception   MessageBox.Show(MyException.ToString())End Try
    In Visual C# .NET, add the following code to the button1_Click event handler.
    int ReturnedIndex;try{   ReturnedIndex = listBox1.FindString("One", 3);   MessageBox.Show(ReturnedIndex.ToString());}catch(Exception MyException){   MessageBox.Show(MyException.ToString());}try{   ReturnedIndex = listBox1.FindStringExact("One", 3);   MessageBox.Show(ReturnedIndex.ToString());}catch(Exception MyException){   MessageBox.Show(MyException.ToString());}try{   ReturnedIndex = comboBox1.FindString("One", 3);   MessageBox.Show(ReturnedIndex.ToString());}catch(Exception MyException){   MessageBox.Show(MyException.ToString());}try{   ReturnedIndex = comboBox1.FindStringExact("One", 3);   MessageBox.Show(ReturnedIndex.ToString());}   catch(Exception MyException){   MessageBox.Show(MyException.ToString());}
    Note You may replace One with any of the other strings in the ListBox or in the ComboBox without affecting this step.
  10. No menu Debug , clique em Iniciar para executar o aplicativo.

    Form1 é exibida.
  11. No Visual Basic. NET, clique em Button1 . No Visual translation from VPE for Csharp. NET, clique em button1 . Você recebe uma série de quatro caixas de mensagem com informações semelhantes às informações de mencionado na seção "Sintomas" deste artigo.
  12. Clique em OK para fechar cada caixa de mensagem. A próxima caixa de mensagem automaticamente será exibida.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 820634 - Última Revisão: 12/08/2015 02:42:25 - Revisão: 2.4

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

  • kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005doesnotapply kbvs2002sp1sweep kbstringeditor kbstring kbexcepthandling kblistbox kbctrl kbcontrol kbcombobox kberrmsg kbwindowsforms kbforms kbprogramming kbbug KB820634 KbMtpt
Comentários