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 :

Appelé un timer à partir d'une nouvelle form


Sujet :

Windows Forms

  1. #1
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut Appelé un timer à partir d'une nouvelle form
    Bonjour,
    jai intitialisé le timer dans la form1 et je veux larreter a partir de la form2
    dans la form1 jai mis

    timer.interval=2000;
    timer.start();


    je veux faire timer.stop(); a partir de la form1

    Merci beaucoup

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Il faut que tu passes par un accesseur sur ce timer.

  3. #3
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Il faut que tu passes par un accesseur sur ce timer.
    Vous pouvez me donner plus de dtails, merci beaucoup

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par abbd Voir le message
    Vous pouvez me donner plus de dtails, merci beaucoup
    Ton timer n'est pas "visible" par ta form2. Il faut soit modifier sa portée en le rendant public, c'est-à-dire visible par ta form2 :
    Soit créer un accesseur pour cette variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public string Timer
    {
        get { return this.timer; }
    }

  5. #5
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Skalp Voir le message
    Ton timer n'est pas "visible" par ta form2. Il faut soit modifier sa portée en le rendant public, c'est-à-dire visible par ta form2 :
    Soit créer un accesseur pour cette variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public string Timer
    {
        get { return this.timer; }
    }
    Bonjour

    ya une seule erreur qui s'affiche :
    Erreur 7 Cannot implicitly convert type 'System.Windows.Forms.Timer' to 'string' C:\Documents and Settings\abbd\Bureau\test48\test0\Form1.cs 27 26 test0


    Merci beaucoup

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Le message d'erreur est clair, non ?
    ಠ_ಠ

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 42
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Skalp Voir le message
    Soit créer un accesseur pour cette variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public string Timer
    {
        get { return this.timer; }
    }
    Le Timer n'est pas un string il faut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public Timer m_timer;
     
    public Timer Timer
    {
        get {return m_timer;}
    }
    Tu écris ça dans ta form1.cs. E tu as accès à l'accesseur "Timer" dans ta form2.cs.

    En d'autres terme dans form1.cs, tu écris :
    Et dans form2.cs, tu écris :
    Voilà normalement là tu as tout à toi dé réajuster par rapport à ton code si besoin est.

  8. #8
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Le message d'erreur est clair, non ?
    oui timer n'est pas de type string, je met quoi svp??
    merci

  9. #9
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par abbd Voir le message
    oui timer n'est pas de type string, je met quoi svp??
    merci
    Beh tu mets Timer à la place de string dans la définition de la propriété
    ಠ_ಠ

  10. #10
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Beh tu mets Timer à la place de string dans la définition de la propriété
    Oui, la propriété renvoie un Type Timer, évidemment. C'est un malheureux copié-collé, merci de m'avoir corrigé

  11. #11
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Beh tu mets Timer à la place de string dans la définition de la propriété

    Merci beaucoup pour vos réponses mais malheureusement ça marche pas, jai mis dans la form1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public Timer tt1;
            public Timer Timer
            {
                get { return this.tt1; }
            }


    puis dans le load de la form2, j'ai mis:
    y'a cette erreur : Erreur 6 The name 'tt1' does not exist in the current context C:\Documents and Settings\abbd\Bureau\test48\test0\alerte.cs 21 13 test0

    Merci beaucoup

  12. #12
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par abbd Voir le message
    y'a cette erreur : Erreur 6 The name 'tt1' does not exist in the current context C:\Documents and Settings\abbd\Bureau\test48\test0\alerte.cs 21 13 test0
    C'est normal, form2 ne connait pas form1, donc elle ne connait pas non plus tt1, qui appartient à form1.
    Il te faut récupérer la référence de form1 dans form2. Montre-nous ton code, qu'on puisse te dire ce que tu dois corriger exactement.

  13. #13
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Skalp Voir le message
    C'est normal, form2 ne connait pas form1, donc elle ne connait pas non plus tt1, qui appartient à form1.
    Il te faut récupérer la référence de form1 dans form2. Montre-nous ton code, qu'on puisse te dire ce que tu dois corriger exactement.
    dans la form2.cs je veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void alerte_Load(object sender, EventArgs e)
            {
                    tt1.Stop();
             }
    dans la form1.cs j'ai fais:
    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
     
    public partial class Form1 : Form
        {
            public Form1()
            {InitializeComponent(); 
            }
     
            public Timer tt1;
            public Timer Timer
            {
                get { return this.tt1; }
            }
     
     
            private void Form1_Load(object sender, EventArgs e)
            {  tt1.Start(); }
     
       }
    merci beaucoup.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 42
    Points : 43
    Points
    43
    Par défaut
    C'est normal dans la form2 tu n'utilises pas ton accesseur créé dans la form1.

    Regarde ce que j'ai mis au dessus.

  15. #15
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Avatarr Voir le message
    C'est normal dans la form2 tu n'utilises pas ton accesseur créé dans la form1.

    Regarde ce que j'ai mis au dessus.
    dans la form2.cs je veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void alerte_Load(object sender, EventArgs e)
            {
                    Timer222.Stop();
             }
    dans la form1.cs j'ai fais:
    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
     
    public partial class Form1 : Form
        {
            public Form1()
            {InitializeComponent(); 
            }
     
            public Timer tt1;
            public Timer Timer222
            {
                get { return this.tt1; }
            }
     
     
            private void Form1_Load(object sender, EventArgs e)
            {  tt1.Start(); }
     
       }
    y'a cette erreur :Erreur 2 The name 'Timer222' does not exist in the current context C:\Documents and Settings\Administrateur\Bureau\test48\test0\alerte.cs 16 13 test0


    merci beaucoup.

  16. #16
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Bonsoir,

    Encapsule ton champ qui correspond au timer sinon ton accesseur ne sert à rien ! met ça à la place :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private Timer tt1;
    alert et form1 sont des classes différentes. Le timer de form1 n'est pas connu par alert car il n'y a pas de lien entre les 2 classes. Si alert est une WinForm fille de Form1 alors tu peux utiliser ça pour récupérer un objet de Form1 et l'utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Form1 formulaire = this.ParentForm as Form1;
    if(formulaire != null)
    {
           formulaire.Timer222.Stop();
    }

  17. #17
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par harz62 Voir le message
    Bonsoir,

    Encapsule ton champ qui correspond au timer sinon ton accesseur ne sert à rien ! met ça à la place :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private Timer tt1;
    alert et form1 sont des classes différentes. Le timer de form1 n'est pas connu par alert car il n'y a pas de lien entre les 2 classes. Si alert est une WinForm fille de Form1 alors tu peux utiliser ça pour récupérer un objet de Form1 et l'utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Form1 formulaire = this.ParentForm as Form1;
    if(formulaire != null)
    {
           formulaire.Timer222.Stop();
    }

    Merci,

    Le problem qu'il entre pas dans la if, malgré que la form1 est affcihé, quand j'enlève le if il me m'affiche une exception :

    La référence d'objet n'est pas définie à une instance d'un objet.

    Merci beaucoup

  18. #18
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par abbd Voir le message
    Le problem qu'il entre pas dans la if, malgré que la form1 est affcihé, quand j'enlève le if il me m'affiche une exception :
    La référence d'objet n'est pas définie à une instance d'un objet.
    harz62 te proposait ça, "Si alert est une WinForm fille de Form1", ce qui n'est visiblement pas le cas.

    Comment et depuis quel objet form1 est affiché ?
    Comment et depuis quel objet form2 est affiché ?

    Le code que tu nous montre ne nous suffit pas pour t'aider. Chacun te donne des conseils un peu à l'aveugle et comme visiblement tu ne t'y connais pas beaucoup, je te propose une nouvelle fois de nous montrer plus de code : tout ce qui se rapporte à form1 et form2, afin que nous puissions t'aider au mieux

  19. #19
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Bonjour,
    Je vous remercie pour vos réponses, cepandant je veux afficher une fenetre alerte periodiquement, par exemple chaque les 1min, tantque cette fenetre est affichée je veux stoper la timer de la fenetre principale, si je le stop pas, il va afficher la meme fenetre chaque 1min.

    pour cela j'ai fais:

    dans la form2.cs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void alerte_Load(object sender, EventArgs e)
            {
                   Timer.Stop();
             }
    dans la form1.cs
    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
    24
    25
     
    public partial class Form1 : Form
        {
            public Form1()
            {InitializeComponent(); 
            }
     
            public Timer tt1;
            public Timer Timer
            {
                get { return this.tt1; }
            }
     
           private void tt1_Tick(object sender, EventArgs e)
            {
                alerte f3;
                f3 = new alerte();
                f3.Show(); 
            }
     
     
           private void Form1_Load(object sender, EventArgs e)
            {  tt1.Start(); }
     
       }
    merci beaucoup.

  20. #20
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Bon, je crois que j'ai enfin saisi :
    - Je pense que tu as créé un timer à partir du designer.
    - Si je reste dans cette hypothèse : tu dois supprimer cette ligne qui ne sert à rien (qui devrait même générer une erreur car tu dois déjà avoir un timer tt1 déclaré, mais bon passons) :
    - Puis, tu vas mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void tt1_Tick(object sender, EventArgs e)
    {
        alerte f3;
        f3 = new alerte();
        f3.Show(this);
    }
    - Puis dans Form2.cs, tu vas mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void alerte_Load(object sender, EventArgs e)
    {
        ((Form1)this.Owner).Timer.Stop();
    }
    Ainsi, ta form "alerte" connais "form1" car lorsque tu ouvres "alerte", tu lui dis que "form1" est la fenêtre parente (avec le this en rouge).
    Ensuite, dans "alerte" tu peux faire appel aux propriétés de "form1" en convertissant la fenêtre parente (this.owner en rouge) en "form1".

    ...C'est clair ?

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

Discussions similaires

  1. Appel d'une procédure à partir d'une autre form
    Par kroma23 dans le forum Langage
    Réponses: 2
    Dernier message: 02/01/2012, 21h02
  2. acceder à un datagridview à partir d'une nouvelle forme
    Par nahoula1231 dans le forum VB.NET
    Réponses: 7
    Dernier message: 01/08/2010, 22h29
  3. Réponses: 16
    Dernier message: 15/10/2009, 17h20
  4. Réponses: 1
    Dernier message: 15/05/2008, 20h00
  5. appeler plusieurs fonctions à partir d'une checkbox
    Par amelhog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/05/2005, 16h10

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