Vb.net messagebox.show () move meu formulário para a parte traseira
-
03-07-2019 - |
Pergunta
Eu tenho um aplicativo MDI. Quando mostro uma caixa de mensagem usando o MessageBox.show (), todo o aplicativo desaparece por trás de todas as minhas janelas abertas quando dispenso a caixa de mensagens.
O código não está fazendo nada de especial. De fato, aqui está a linha que chama a caixa de mensagens de um formulário infantil do MDI:
MessageBox.Show(String.Format("{0} saved successfully.", Me.BusinessUnitTypeName), "Save Successful", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)
Me.businessUnittypeName () é um imóvel de leitura que retorna uma string, dependendo do valor de uma variável de membro. Não há efeitos colaterais nesta propriedade.
Alguma ideia?
Solução
Remova o último parâmetro, MessageBoxOptions.DefaultDesktopOnly
.
A partir de Msdn:
DefaultDesktoponly fará com que o aplicativo tenha aumentado a caixa de mensagem para perder o foco. A caixa de mensagem exibida não usará estilos visuais. Para obter mais informações, consulte Renderizando controles com estilos visuais.
O último parâmetro permite a comunicação de um serviço de janelas em segundo plano com o desktop ativo por meio de meios de csrss.exe! Veja Bart de Smet's Postagem do blog para detalhes.
Outras dicas
Remova o MessageBoxOptions.DefaultDesktopOnly
parâmetro e funcionará corretamente.
DefaultDesktopOnly
especifica que "A caixa de mensagem é exibida no desktop ativo"O que causa a perda de foco.
Essas respostas estão corretas, mas eu queria adicionar outro ponto. Me deparei com essa pergunta enquanto trabalhava com o código de outra pessoa. Uma caixa de mensagem simples estava fazendo com que a maioria das janelas da frente se movesse para trás:
MessageBox.Show ("Hello").
Acontece que houve um comando BindingSource.Edit antes da caixa de mensagem. O BindingSource ainda não estava conectado a nenhum controle, mas fez a janela alterar as posições Z.
Estou apenas incluindo esta nota, já que minha pesquisa me levou a essa pergunta e achei que poderia ser útil para outra pessoa.