Pergunta

Eu tenho um formulário MDI com 3 janelas filhas.

  • O MDI começa vazio.

  • Cada criança pode ser aberta uma vez no menu.

Quando abro várias janelas e fecho a superior, uma deve obter o foco, mas o evento GotFocus() do novo formulário filho ativo não está disparando.

Private Sub frmMain_gotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus
...
End Sub
Foi útil?

Solução

Adivinhação infeliz.O evento Enter ou Activated resolverá seu problema.

Na programação do Windows Forms, normalmente você deseja evitar os eventos GotFocus e LostFocus.Muitas vezes eles estão ocultos no designer, mas não de forma consistente.Respectivamente, os eventos Enter e Leave são seus substitutos, eles são gerados a partir do estado lógico da UI em vez das mensagens brutas do Windows.Faz diferença na hora de usar Validação e MDI.

Ativado é o "natural", já que o foco real passa para um controle filho dessa forma.

Outras dicas

Ao criar os formulários filhos MDI a partir do pai MDI, você deve assinar o formulário pai MDI no evento GotFocus do formulário filho MDI.Que quando qualquer evento de foco acontecer em seu filho MDI, seu pai MDI seja notificado.

Quando um formulário é fechado/aberto, o próximo formulário filho no MDI Z-Order deve ser selecionado automaticamente e, se você estiver se inscrevendo no evento, seu pai MDI poderá agir adequadamente e exibir seus dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top