2011-06-07 9 views
1

Parfois, ma boîte de message s'affiche sous la fenêtre principale de l'application. Ainsi, la boîte de message est invisible et la fenêtre principale a l'air d'être accrochée et ne répond à aucune entrée. Il est possible de "dégeler" la fenêtre principale en utilisant alt-tab pour basculer vers une autre application et revenir en arrière, et cela affiche finalement la boîte de message au bon endroit - au dessus de la fenêtre principale. Mais ce n'est pas évident pour l'utilisateur.Boîte de message sous la fenêtre principale

Des idées, comment éviter ce problème?

UPD la fenêtre principale est native; J'ai essayé d'utiliser MessageBox avec et sans spécifier la fenêtre parente, mais j'ai eu le même problème dans les deux cas

+0

Pouvez-vous s'il vous plaît poster un code? –

Répondre

0

Je ne sais pas quelle était la raison, mais en utilisant ma propre enveloppe pour la fenêtre parent natif fixe ce problème:

public class Win32Window : IWin32Window 
{ 
    public Win32Window(IntPtr val) 
    { 
     _handle = val; 
    } 

    readonly IntPtr _handle; 

    public IntPtr Handle 
    { 
     get { return _handle; } 
    } 
} 
2

Généralement lorsque vous appelez des fonctions de boîte de message, ils prennent une fenêtre "parent" comme argument. Quelle fenêtre passez-vous en tant que fenêtre "parent"?

+0

Demander le handle dans l'application hôte et utiliser Control.FromHandle() pour renvoyer – user626528

+2

@user: Il est donc probable que l'application hôte passe NULL (IntPtr.Zero), ce qui provoque l'affichage de la boîte de message avec la fenêtre du bureau son parent. Cela va le mettre sous la fenêtre de votre application. Montrez le reste du code pour obtenir une meilleure aide. –

+0

@Cody Gray, ce n'est pas zéro. Et si la fenêtre de bureau était son parent, elle ne gèlerait pas la fenêtre principale de mon application. – user626528

0

peut-être que vous appelez boîte de message dans un second fil non thread principal

Questions connexes