Comment rendre le formulaire de démarrage initialement invisible ou masqué

Comment rendre le formulaire de démarrage initialement invisible ou masqué

J’ai un projet d’interface graphique avec formulaire 2 et les formulaires doivent être affichés séparément. Par exemple, lorsque le formulaire 1 est affiché, toutes les autres formes doivent être masquées.

Je peux masquer tous les autres formulaires, mais je ne peux pas masquer le formulaire de démarrage. C’est l’icône de mon application dans la barre d’état système.

Par exemple, les applications pare-feu / antivirus et de messagerie instantanée le font pour s’exécuter en arrière-plan et restr accessibles à l’utilisateur depuis la barre d’état système.

Je suppose que ce que vous demandez, c’est comment faire en sorte que le formulaire n’apparaisse pas dans la barre des tâches et n’apparaisse que dans la barre d’état système, comme un IM ou un anti-virus?

Si c’est le cas, définissez simplement la propriété ShowInTaskbar du Form sur false .

Comme pour rendre le formulaire initial invisible, vous devrez utiliser un ApplicationContext dans Application.Run au lieu du formulaire principal.

définir la propriété ShowInTaskbar sur false et définir le WindowState à minimisé

Microsoft a écrit une page Web à ce sujet. Il donne un exemple d’utilisation d’ ApplicationContext . Au lieu d’avoir une application de formulaires, vous disposez d’une application qui exécute Main() et Main puis ouvre les formulaires.

http://msdn.microsoft.com/en-us/library/Aa984417

Vous perdez cependant une perte de fonctionnalité de cette manière, car vous devez désactiver le “framework d’application”. Cela rendra votre Windows moche.

Voici une solution différente, presque un hack mais pas trop mal. Lorsque Windows démarre votre application de formulaire et définit Visible sur true, cela provoque un appel à SetVisibleCore . Vous pouvez remplacer cette fonction. Lors de la première utilisation de SetVisibleCore , définissez-le sur false. À partir de là, il suffit de passer.

Gardez à l’esprit que Form.Load ne se déclenchera pas au démarrage de votre application si le formulaire ne s’affiche pas, déplacez donc tout le code dans Sub New() .

Voici le tout:

 Public Sub New() ' This call is required by the designer. InitializeComponent() ' Add any initialization after the InitializeComponent() call. config.LoadFromRegistry() 'this gets config.StartMinimized from the registry ' Code that needs to run at start, even if the form isn't showing, ' should be here. Form.Load will only happen when the Form is actually ' visible for the first time. End Sub Dim FirstSetVisible As Boolean = True Protected Overrides Sub SetVisibleCore(ByVal value As Boolean) If config.StartMinimized And FirstSetVisible Then MyBase.SetVisibleCore(False) 'ignore Windows attempt to set Visible FirstSetVisible = False 'never do this again Else MyBase.SetVisibleCore(value) End If End Sub