Pergunta

Eu estou mostrando Diálogos com Form.ShowDialog (). Formas são definidas para TopMost. Alguns cálculos de processamento de imagem são realizados asynchronly em segundo plano. Seus resultados são processados ??na forma principal Invoke. Por enquanto, tudo bem. estranho é que a cada momento e, em seguida, a caixa de diálogo modal é movido por trás do formulário principal. Eu acho que isso acontece quando as mensagens que construir o diálogo são de alguma forma "perturbado" com Invoke.

Todas as idéias como resolver este problema?

Foi útil?

Solução

Como regra geral, evite TopMost menos que você absolutamente não deve. Se você absolutamente não deve, nunca tem mais de uma forma TopMost de cada vez. (Afinal, não pode haver três formas mais alto --- alguém tem que perder).

Em primeiro lugar, verifique se você está definindo corretamente o proprietário quando você chamar Form.ShowDialog(). Isso fará com que a nova forma mais provável de aparecer em um local apropriado e toda a melhorar o comportamento da aplicação. Em segundo lugar, verifique se você só tem uma janela de nível superior em qualquer altura. Uma falha combinados para fazer essas coisas poderia definitivamente fazer com que seu problema. Por exemplo:.

// MainForm.cs -- Don't do this
this.TopMost = true;
childForm.TopMost = true;
childForm.ShowDialog(/*no parent spec'd*/);

Agora, o que acontece? Tanto o formulário principal eo formulário filho é mais alto, assim que um deles tem a perder. MainForm estava ativo quando criou childForm como superior, mas não childForm não tem um pai. Talvez o Windows decidiu fazer o ambiente de trabalho seu pai. Isso poderia resultar na forma principal de permanência na do formulário filho recém-inaugurado.

Outras dicas

Talvez você poderia tentar passar o formulário de possuir como um parâmetro para ShowDialog, assim (sintaxe VB):

Form.ShowDialog(Me)

Não tenho certeza se ele iria mudar nada, mas vale a pena tentar ...

Além disso, quando você diz "Formulários estão definidas para TopMost", que quer dizer a forma principal, ou as formas modais? Você realmente precisa configurá-lo para TopMost? Às vezes formas mais alto têm um comportamento estranho ...

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