Erro: Foco está no controle filho oculto enquanto a propriedade Visible do pai está definida como False

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: 814348
Sintomas
Você pode definir a propriedade Visible de um controle pai para False em tempo de execução. Se você fizer isso, o foco não está definido para qualquer controle visível. Não, o foco é movido para o próximo controle visível na ordem de tabulação. Por exemplo, você tem um controle Button em um controle Panel . Em tempo de execução, você deve definir a propriedade Visible do painel como False no procedimento de evento Click do controle de botão . O foco é ainda no controle Button . Não, o foco é movido para o próximo controle visível. Isso ocorre quando você ocultar o controle pai.
Causa
Quando o foco estiver em um controle filho e você ocultar o controle pai, o foco se move para o primeiro filho do controle pai. Portanto, o foco permanece no controle oculto. O foco não é movido para o próximo controle visível no formulário.
Como Contornar
Para contornar esse bug, defina o foco para o próximo controle visível no formulário. Você deve fazer isso antes ou depois de você ocultar o controle pai. Para definir o foco para o próximo controle visível no formulário, execute essas etapas:
  1. Clique duas vezes em Button1 . Substitua o código existente com o código a seguir:

    Visual Basic .NET ou Visual Basic 2005
    ' Hide the Parent controlMe.Button1.Parent.Visible = False' Set the Focus to next controlSelectNextControl(Button1, True, True, True, True)
    translation from VPE for Csharp Visual .NET ou Visual translation from VPE for Csharp 2005
    // Hide the Parent controlthis.button1.Parent.Visible = false;// Set the Focus to next controlSelectNextControl(button1,true,true,true,true);
  2. Clique duas vezes em Button2 . Substitua o código existente com o código a seguir:

    Visual Basic .NET ou Visual Basic 2005
    ' Set the Focus to next controlSelectNextControl(Button2, True, True, True, True)' Hide the Parent controlMe.Button2.Parent.Visible = False
    translation from VPE for Csharp Visual .NET ou Visual translation from VPE for Csharp 2005
    // Set the Focus to next controlSelectNextControl(button2,true,true,true,true);// Hide the Parent controlthis.button2.Parent.Visible = false;
Situação
A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.
Mais Informações

Passos para reproduzir o problema

  1. Execução do Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005. Crie um novo aplicativo do Microsoft Windows usando o Visual Basic. NET, Visual Basic 2005, Visual translation from VPE for Csharp 2005 ou Visual translation from VPE for Csharp .NET.

    Por padrão, é criado o Form1.
  2. Da caixa de ferramentas, arraste um controle Panel para Form1.

    Painel1 é criado no Form1.
  3. Da caixa de ferramentas, arraste um controle Button para Panel1 .

    Button1 é criado no Painel1 .
  4. Clique duas vezes em Button1 e adicione o seguinte código ao procedimento de evento Click :

    Visual Basic .NET ou Visual Basic 2005
     Me.Button1.Parent.Visible = False
    translation from VPE for Csharp Visual .NET ou Visual translation from VPE for Csharp 2005
    this.button1.Parent.Visible = false;
  5. Adicione outro botão ao Form1.

    Button2 é criado.
  6. No menu Debug , clique em Iniciar .
  7. Clique em Button1 . Observe que Panel1 está oculta, mas o foco não está no Button2 .
Referências
Para obter mais informações, consulte o SDK do Microsoft .NET Framework documentação ou visite o seguinte site da MSDN:

Propriedade Control.Visible
http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.visible(vs.71).aspx

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 814348 - Última Revisão: 11/14/2007 05:39:50 - Revisão: 3.8

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual C# 2005 Express Edition, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition

  • kbmt kbvs2005applies kbvs2005swept kbvs2002sp1sweep kbproperties kbcontrol kbcontainer kbbug KB814348 KbMtpt
Comentários