J'ai une application Windows Forms écrite en C #. La fonction suivante vérifie si l’imprimante est en ligne ou non:
public void isonline()
{
PrinterSettings settings = new PrinterSettings();
if (CheckPrinter(settings.PrinterName) == "offline")
{
pictureBox1.Image = pictureBox1.ErrorImage;
}
}
et met à jour l'image si l'imprimante est hors ligne. Maintenant, comment puis-je exécuter cette fonction isonline()
toutes les 2 secondes afin que, lorsque je débranche l'imprimante, l'image affichée sur le formulaire (pictureBox1
) Se transforme en une autre sans relancer l'application ni vérification manuelle? (par exemple, en appuyant sur le bouton "Refresh" qui exécute la fonction isonline()
)
Utilisez System.Windows.Forms.Timer .
private Timer timer1;
public void InitTimer()
{
timer1 = new Timer();
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Interval = 2000; // in miliseconds
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
isonline();
}
Vous pouvez appeler InitTimer()
dans Form1_Load()
.
La solution la plus conviviale pour les débutants est la suivante:
Faites glisser un minuteur de la boîte à outils, attribuez-lui un nom, définissez l'intervalle souhaité, puis définissez "Enabled" sur True. Ensuite, double-cliquez sur le minuteur et Visual Studio (ou celui que vous utilisez) écrira le code suivant:
private void wait_Tick(object sender, EventArgs e)
{
refreshText(); // Add the method you want to call here.
}
Pas besoin de vous soucier de le coller dans le mauvais bloc de code ou quelque chose du genre.
Vous pouvez le faire facilement en ajoutant un minuteur à votre formulaire (créé par le concepteur) et en configurant sa fonction Tick pour exécuter votre fonction isonline.