Controler automatiquement un textBox [Résolu]

Signaler
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011
-
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011
-
Bonjour,je suis débutante en c#.Je veux réaliser une fonction qui saisie le contenu d'un fichier texte dans un textBox en vérifiant le contenu du texte tous les 2 minutes.Lorsque la valeur saisi dans le textBox est égale à 1 une alarme va etre déclencher.
J'ai réussi à saisir le contenu du fichier texte dans un texteBox et losque elle égale à 1 une alarme est déclenchée.Mon problème c'est comment controler ce textBox chaque 2 minutes.Voici mon code:


using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Media;

namespace streamReader
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//Creating a new stream-reader and opening the file.
System.IO.StreamReader StreamReader1 = new System.IO.StreamReader(@"..//..//déclenche priorité//priorité.txt");

//Reading Line from file
string newLine;
while ((newLine = StreamReader1.ReadLine()) != null)


//Writing the read line to textBox
textBox1.AppendText(newLine);

//Close the file
StreamReader1.Close();
}






private void textBox1_TextChanged(object sender, EventArgs e)
{


if (textBox1.Text == "1")
{
SoundPlayer player = new SoundPlayer();
string chemin = "..//..//Sequences//alarme.wav";
player.SoundLocation = chemin;
player.Play();
}

}


}
}
Merci d'avance d'avoir m'aider.

12 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
39
Salut

La classe Windows.Forms.Timer te permet de résoudre ce problème très facilement :
Méthode appelée toutes les deux minutes :
void timer_Tick(object sender, EventArgs e)
{
    // Là, tu codes les traitements 
    // effectués toutes les deux minutes
}


Code pour créer et lancer le timer :
Timer timer = new Timer(); // Création du timer
timer.Interval = 1000 * 60 * 2; // 2 minutes
timer.Tick += new EventHandler(timer_Tick); // Choix de la méthode à appeler
timer.Start();  // Tu lances le timer


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
153
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
17 juin 2011
1
Avec System.Threading.Thread.Sleep(5000); par exemple pour attendre 5s avant la suite, mais tu ne peux rien faire à coter.
Donc regarde du coté de la classe Timer http://msdn.microsoft.com/en-us/library/system.timers.timer%28v=VS.71%29.aspx
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011

Merci pour votre réponse smathis mais est qu'il n'y a pas une autre solution car le thread ne me permet pas de controler le texteBox chaque une période.
Messages postés
153
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
17 juin 2011
1
Si tu lances un thread pour le contrôle uniquement, il suffit de mettre dans une fonction récursive avec le traitement, l'attente, l'appel à elle même.
Ou sinon tu essayes les Timer.
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011

Salut,
Merci beaucoup krimog pour ta réponse ça vraiment m'aider.
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011

Salut,
J'ai un autre problème:Comment effacer le contenu du texteBox après chaque timer.merci d'avance pour vos réponses.
Messages postés
153
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
17 juin 2011
1
Effacer le contenu d'une textbox ?
txt.Text=""; mais ça me parait trop évident pour que ça soit ce que tu cherches.
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011

Salut,j'ai dèja fait ce que tu as dit mais le contenu de textBox n'apparait plus.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
39
Tu n'es pas clair sur ce que tu souhaites faire :
D'un côté, tu dis que tu veux effecter le contenu de la textBox, d'un autre tu te plainds que son contenu n'apparaisse plus...

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011

Salut,
Comme j'ai expliqué dans mon premier message,lorsque la valeur du textBox qui est lu d'un fichier texte est égale à 1 une alarme va étre déclencher.C'est pour cela qu'il faut que la valeur s'affiche au moment de déclenchement puis s'efface après le déclenchement de l'alarme pour pouvoir le vérifier après 2 minutes.
J'espère que vous m'avez compris et merci.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
39
Bah dans ce cas, ce n'est qu'après le déclenchement de l'alarme que tu fais textBox.Text = "";

Ou alors je n'ai toujours pas compris, auquel cas il va falloir donner un exemple bien précis.


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011

Salut,
ça marche mais la valeur apparaît très vite.
Dans mon projet je besoin de lire un son audio dans trois cartes son externes.J'ai réussi avec Device number() de lire le son dans l'une des cartes sons mais pas tous.Est ce que quelqu'un s'il vous plait peut m'aider à faire une fonction playInAll qui permet de lire un son dans mes 3 cartes son externes qui sont installée à mon pc.
Merci bien pour vos réponses.