IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Form qui apparaît ou disparaît aléatoirement


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut Form qui apparaît ou disparaît aléatoirement
    Salut !


    Logiquement, si je déclare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void Form1_Load(object sender, EventArgs e)
            {            
                ...
                this.Hide();
            }

    la form devrait devenir invisible (enfin, se cacher quoi), non ? Pourtant, chez moi, elle apparaît alétoirement !
    Comment ça se fait ? C'est un bug de Windows 7 x64 ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    Je dirai que tu n'es pas cencé avoir un comportement aléatoire à ce niveau là SI c'est le thread principale qui a appellé Show() ou ShowDialog() de cette form.

    As tu essayé en ne mettant rien d'autre que ton Hide dans cette methode?

    fais tu un show ou showdialog? et si tu fais un show() est ce que derriere tu n'as pas des instructions qui risquent de réafficher ta form?

    As tu un seul ou plusieurs threads qui tournent?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Citation Envoyé par giova_fr Voir le message
    Je dirai que tu n'es pas cencé avoir un comportement aléatoire à ce niveau là SI c'est le thread principale qui a appellé Show() ou ShowDialog() de cette form.

    As tu essayé en ne mettant rien d'autre que ton Hide dans cette methode?

    fais tu un show ou showdialog? et si tu fais un show() est ce que derriere tu n'as pas des instructions qui risquent de réafficher ta form?

    As tu un seul ou plusieurs threads qui tournent?
    - En ne mettant rien d'autre que le Hide, ça ne change rien...
    - Je ne fais pas de Show ou ShowDialog étant donné que c'est la fenêtre principale du prog; c'est sur elle qu'il démarre.
    - Un seul Thread (enfin je pense puisque je n'en ai pas créé moi-même).


  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    ok alors...

    dans ton Main

    plutot que faire ApplicationRun(new Form());
    tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Form _form = new form();
    _form.MesPetitesPrepas(monparam1,monparam2,etc);
    Application.Run(_form);
    Et oublie le Hide dans le LoadForm

    si vraiment tu veux que ta form n'apparraisse pas, dans les propriété de celle ci, tu lui met : WindowState à Minimized ainsi se lancera minimisée

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Citation Envoyé par giova_fr Voir le message
    ok alors...

    dans ton Main

    plutot que faire ApplicationRun(new Form());
    tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Form _form = new form();
    _form.MesPetitesPrepas(monparam1,monparam2,etc);
    Application.Run(_form);
    Et oublie le Hide dans le LoadForm
    Euuuh.... J'ai pas tout suivi là ....
    Pourquoi me conseilles-tu de procéder ainsi ?
    Faut savoir aussi que la form ne sera pas toujours cachée hein; c'est juste au démarrage qu'elle doit l'être.

    Sinon, comment expliquer que ça se passe aléatoirement ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Par défaut
    J'ai fais un petit edit entre temps

    Citation Envoyé par giova_fr Voir le message
    ok alors...

    si vraiment tu veux que ta form n'apparraisse pas, dans les propriété de celle ci, tu lui met : WindowState à Minimized ainsi se lancera minimisée
    Pour ce qui est du phénomene aléatoire, je ne sais pas, mais devinne, que :
    comme ta form est créée par Application.Run, sa pompe à message est en train d'etre construite. this.Hide envoi un message windows pour demander à cacher la fenetre. Peut etre que des fois la pompe à message est prete à recevoir ce message, peut etre que d'autres fois non.

    Quoi qu'il en soit placer un Hide dans la callback LoadForm n'a pas trop de sens. Car le Framework nous dit : "je vais afficher la fenetre" et nous on lui dit "mais non je me suis trompé finallement, je ne veux pas afficher la fenetre cache là". Est alors ajouté à la pompe à message, l'ordre Hide, puis on sort de LoadForm, puis le framework affiche la form, puis lorsque la pompe tombe sur hide, celle ci cache la fenetre.

    Mieux faut lui dire : "Lorsque tu affichera la fenetre, fais le en la mettant en status minimisé"

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Citation Envoyé par giova_fr Voir le message
    Mieux faut lui dire : "Lorsque tu affichera la fenetre, fais le en la mettant en status minimisé"
    Tu as parfaitement raison !

    Merci !

Discussions similaires

  1. Mise en forme qui disparaît à la réouverture du fichier
    Par AFO_Liege dans le forum Conception
    Réponses: 0
    Dernier message: 30/01/2012, 10h13
  2. [KSH] Message qui apparaît et disparaît
    Par Rithy666 dans le forum Linux
    Réponses: 10
    Dernier message: 10/05/2010, 21h33
  3. texte qui apparaît/disparaît au clic
    Par marion5515 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 06/06/2008, 09h57
  4. [html] code qui apparaît souvent
    Par francis m dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 02/06/2005, 00h16
  5. [VB.NET] Authentification Form qui rate.
    Par Abalalojik dans le forum ASP.NET
    Réponses: 4
    Dernier message: 10/01/2005, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo