2009-03-26 7 views
10

Je crée des toasts toujours en forme sous forme de formulaires et quand je les ouvre, je voudrais qu'ils ne suppriment pas le focus des autres formes à mesure qu'elles s'ouvrent. Comment puis-je faire ceci?Ouverture d'un formulaire en C# sans focus

Merci

+1

double possible de [Afficher un formulaire sans avoir volé foyer?] (Http://stackoverflow.com/questions/156046/show-a-form-without-stealing- focus) – Breeze

Répondre

12
protected override bool ShowWithoutActivation 
{ 
    get 
    { 
     return true; 
    } 
} 

Remplacer cette propriété dans votre code de formulaire et il devrait faire l'affaire pour vous.

+4

Il convient de noter que cela ne fonctionnera PAS si votre formulaire a la propriété TopMost définie sur true, pour utiliser cette substitution avec un formulaire supérieur, vous devez remplacer CreateParams et définir également WS_EX_TOPMOST sur l'ExStyle. –

10

Il m'a fallu quelques minutes en utilisant l'information & d'Adam ci-dessus, mais j'ai finalement réussi à travailler pour moi. La seule chose que je devais faire était de m'assurer que la propriété Top Most du formulaire est définie sur false. Voici le code je ...

protected override bool ShowWithoutActivation { get { return true; } } 

    protected override CreateParams CreateParams 
    { 
     get 
     { 
      //make sure Top Most property on form is set to false 
      //otherwise this doesn't work 
      int WS_EX_TOPMOST = 0x00000008; 
      CreateParams cp = base.CreateParams; 
      cp.ExStyle |= WS_EX_TOPMOST; 
      return cp; 
     } 
    } 
Questions connexes