Cacher ma fenetre à son démarrage

Résolu
Messages postés
110
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
18 mai 2009
-
Messages postés
110
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
18 mai 2009
-
Bonjour...

Je deviens fou ! J'ai cherché partout mais j'ai pas trouvé la réponse à cette question :
Comment faire pour cacher ma fenêtre principale à son chargement en VB 2005 ?
Sur VB 6, dans le Form_Load, il suffisait de mettre Me.Hide et le tour était joué.
En VB 2005, ça ne marche pas (je veux dire que la fenêtre est toujours visible, sans message d'erreur).
Pourquoi ?? Y'a quelque chose que j'ai loupé ?
Le but est de permettre de charger mon application au démarrage de Windows avec une icône dans le
systray, sans en afficher l'unique fenêtre... classique, quoi ;)

SVP, aidez-moi !!
Merci

14 réponses

Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Ben au pire tu fais une variable en plus :

Dim FirstTimeShown As Boolean

dans Form_Load
FirstTimeShown = True

dans Form_Shown
If FirstTimeShown then
  FirstTimeShown = False
  Me.Hide
End if...

C'est un peu bricolo mais ca marchera
Julien.
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Salut,
Le Form_Load est appelé avant que le form ne soit montré, il y a encore un form.Show quelque part qui s'exécute après. Tu dois simplement mettre Me.Hide dans l'évènement Shown de ton form.
Julien.
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
Ou visible = false

E.B.
Messages postés
110
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
18 mai 2009

Merci pour vos réponses, mais aucune des deux ne me convient :
@ Julien237 : oui, mais il faut que quand je le veuille, ma form soit visible, sinon à chaque fois que je lui demanderai de s'afficher elle disparaitrait instantanément avec ta méthode.
@ EBArtSoft : j'avais pensé à ta solution, et ça ne marche pas (trop facile, lol)

J'espère que vous trouverez quand une solution pour me dépanner...
Messages postés
36
Date d'inscription
jeudi 16 février 2006
Statut
Membre
Dernière intervention
26 mai 2008

Dans l'editeur en mode design, tu as mis la propriété visible = false de ta form?
Cela pourrait ètre une solution pour qu'elle soit invisible a son chargement.
Messages postés
110
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
18 mai 2009

@ Aurazed, la propriété Visible n'existe pas en VB 2005 en mode design.

@ Julien237, c'est effectivement bricolo, mais ça marche. Si quelqu'un trouve mieux, je suis preneur car la fenêtre s'affiche pendant un très court instant quand même.
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
Rahhhlalal faut tout faire ici :p

Voici ma solution :

Private
Sub Form1_Activated(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Activated

Me.Visible =
False

End
Sub@+

E.B.
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Ben chez moi ca le cache même pas au démarrage :p, Activated cumule les problèmes de Load et de Shown, il va aussi se déclencher lorsque l'utilisateur réduira puis restaurera le form, donc il devra la aussi utiliser un artifice...
Julien.
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Autre solution sans variable et sans form clignotant au début :

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Opacity = 0
    End Sub

    Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
        If Me.Opacity = 0 Then
            Me.Hide()
            Me.Opacity = 100
        End If
    End Sub

Julien.
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
Mais je comprend pas trop... ta fenetre est toujours invisble ou bien sera visible a un moment ou quoi ? car chez moi visible = false et le tour est joué ??

@+

E.B.
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Oui c'est vrai, mais il faut voir où tu le mets le visible = False, en fait le problème est que le Form_Load et le Form_Activated sont tous deux appelés (la première fois pour activated) avant que le form ne soit réellement affiché, et donc il y'a un Form.Show qui est exécuté dans le code interne du form après notre Me.Visible = False. D'où le problème...
Julien.
Messages postés
110
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
18 mai 2009

@ Julien237 : J'avais pensé à l'opacité, mais j'avais pas trouvé ça génial...

@EBArtSoft : Mon but est que, si dans une variable Command() il y a quelque chose, ne pas afficher la fenêtre (genre pour le démarrage de Windows, lancer le programme mais ne pas l'afficher).
Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
9
D'accord la c'est plus clair. Dans ce cas pourquoi ne pas ajouter un module et c'est le module qui chargera la fenetre si et seulement si la command() le souhaite ? ou bien charger sans affiché. Comme ça tu evite le probleme de l'overshowing

@+

E.B.
Messages postés
110
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
18 mai 2009

> "ou bien charger sans affiché"
Comment faire ?