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

Windows Forms Discussion :

Recharger une Winform [Débutant]


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut Recharger une Winform
    Bonjour

    J'aimerais recharger au Winform
    au démarrage de mon application, ma fenêtre MainForm charge ma fenêtre f18news de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void MainForm_Load(object sender, EventArgs e)
            {
                News.SearchPictures(strPath);
     
                tmrRefresh.Start();
                if (News.iNbFiles > 15 && News.iNbFiles < 19)
                {
                    Form18News f18news = new Form18News();
                    f18news.Visible = true;
                }
     
            }
    Ensuite j'aimerais toutes les 30 secondes fermer la Form18News et la réouvrir avec les nouvelles infos si elles ont changé. Je décrémente donc un iTimer déclarer globalement dans un Timer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    private void tmrRefresh_Tick(object sender, EventArgs e)
            {
                iTimer--;
     
                if (iTimer == 0)
                {
                    tmrRefresh.Stop();
                    Form18News f18news = new Form18News();
     
                    if(f18news == null)
                    {
                        f18news.Visible = false;
                    }
     
                    News.SearchPictures(strPath);
                    if (News.iNbFiles > 15 && News.iNbFiles < 19)
                    {
                        f18news.Visible = true;
                    }
                    iTimer = 10;
                    tmrRefresh.Start();
                }
            }
    Cette méthode ne marche pas, je me retrouve avec ma Form18News ouverte une nouvelle fois toutes les 10 secondes j'en ai donc 6 au bout d'une minute d'ouverte.

    J'ai essayé en faisaint f18News.Show(); , .Close(); .Hide(); aucune des manières ne fonctionne . merci.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Points : 336
    Points
    336
    Par défaut
    Différence entre Dispose() et Close()
    Ca peut t'aider !


    Par contre, si jamais ce cas arrive (ce qui ne devrait pas, vu que tu fais un new, du coup ce if semble plutôt inutile) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                    if(f18news == null)
                    {
                        f18news.Visible = false;
                    }
    Tu auras un bon vieux "La référence d'objet n'est pas définie à une instance d'un objet"
    "Hope for the best, but prepare for the worst."

  3. #3
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    ne vaudrait-il pas mieux rafraichir les contrôles dans f18news plutôt que de supprimer/recréer une instance à chaque fois ?

    NB : News.SearchPicture() fonctionne bien ? C'était une fausse alerte ce matin ?
    Plus je connais de langages, plus j'aime le C.

  4. #4
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Salut

    J'ai meilleur temps de fermer la fenêtre F18News et de la ré-ouvrir mais je n'y arrive pas. Avec .Hide() elle reste, .Close et .Dispose ne permet plus le .Show après. Comment faire ?

    Il y a aucune technique qui permet de dire au programme ferme cette fenêtre (je veux plus la voir du tout dans mes ALT + Tab des fenêtres Windows) puis ré-ouvre là et ainsi de suite ...?!!!

    C'était une fausse alerte ça fonctionne désormais, la dernière chose est comment ajouter dans la classe News.cs que tu m'as aidé à faire le fait qu'il trie le tableau par âge des fichiers du plus récent au plus ancien ?

    Merci

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    D'accord avec jopopmk, il serait préférable de faire une méthode de rafraîchissement dans ta Form.
    Toutefois, concernant ton problème, ta form f18news est définie en local dans ta procédure. Tu perds donc son instance à la sortie de la proc. Il faut que tu déclares f18news en dehors de ta procédure afin de retrouver son instance à chaque déclenchement de ton timer. Tu auras donc un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Form18News f18news;
    private void tmrRefresh_Tick(object sender, EventArgs e)
    {
      if (f18news != null)
       f18news.Close();
      f18news= new Form18News ();
      f18news.Show();
    }
    De plus pourquoi faire un compteur iTimer dans le timer ? Tu peux faire un timer de 10 secondes...
    Maintenant, franchement, il vaudrait mieux se pencher sur le rafraîchissement.

  6. #6
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2015
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Salut ebastien

    Merci, je comprends mieux, je testerai demain

    Cela dit :
    - Pour le timer : j'ai appris comme ça alors s'il y a un autre moyen je veux bien, en fait j'ai pas 2 timer c'est une variable globale de type Int32 nommée iTimer que je décrémente chaque secondes dans le contrôle timer et quand la variable est = à 0 j'effectue des actions. S'il y a une autre solution je suis preneur .

    Pour le rafraichissement : mon programme est fait avec une fenêtre contenant 18 picturebox (Form18News). Cette form est appelé par mon programme principale MainForm

    J'utilise cette façon de faire afin de faire un petit effet sympa lors du rafraichissement


    Si vous avez une autre solution pour faire disparaître les picturebox en effet "fadeout" et les faire réapparaitre en je suis preneur aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  2. Ne pas recharger une animation Flash
    Par pihug12 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 7
    Dernier message: 21/04/2006, 21h10
  3. [VB.NET] verrouillé une winform
    Par leptityugi dans le forum Windows Forms
    Réponses: 6
    Dernier message: 28/10/2005, 09h21
  4. [Tableaux] recharger une partie de la page seulement
    Par Bibicmoi dans le forum Langage
    Réponses: 9
    Dernier message: 05/09/2005, 20h12
  5. [C#] Recharger une page sur le clic d'une ListBox
    Par pc152 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 14/02/2005, 12h48

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