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
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
Il faut que tu passes par un accesseur sur ce timer.
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
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 public Timer timer;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public string Timer { get { return this.timer; } }
Le message d'erreur est clair, non ?
ಠ_ಠ
Le Timer n'est pas un string il faut écrire :
Tu écris ça dans ta form1.cs. E tu as accès à l'accesseur "Timer" dans ta form2.cs.
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;} }
En d'autres terme dans form1.cs, tu écris :
Et dans form2.cs, tu écris :
Code : Sélectionner tout - Visualiser dans une fenêtre à part m_timer.Start();
Voilà normalement là tu as tout à toi dé réajuster par rapport à ton code si besoin est.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Timer.Stop();
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 tt1.Start();
Merci beaucoup
dans la form2.cs je veux faire :
dans la form1.cs j'ai fais:
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(); }
merci beaucoup.
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(); } }
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 :
dans la form1.cs j'ai fais:
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(); }
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
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(); } }
merci beaucoup.
Bonsoir,
Encapsule ton champ qui correspond au timer sinon ton accesseur ne sert à rien ! met ça à la place :
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
2private Timer tt1;
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(); }
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
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 :
dans la form1.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(); }
merci beaucoup.
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(); } }
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 public Timer tt1;
- Puis dans Form2.cs, 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); }
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).
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(); }
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 ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager