Benutzer mit den meisten Antworten
Timer setzen

Frage
-
hallo alle zusammen
ich bin gerade dabei ein kleines programm zu schreiben, das mir die zeit (in ms) die ich benötige, nach dem drücken des "start"-buttons (button1), ausgibt.
aber irgendwie will das nicht so recht....muss ich noch was converten, oder fehlt eher noch ein befehl?
vielen dank
fg velisch
namespace
time_track{
public partial class Form1 : Form{
double i=0; double zeit; public Form1(){
InitializeComponent();
timer1.Interval = 1;
}
private void timer1_Tick(object sender, EventArgs e){
i+= 1;
}
private void button1_Click(object sender, EventArgs e){
timer1.Start();
button1.Visible =
false;}
{
if (e.Button == MouseButtons.Left){
timer1.Stop();
}
MessageBox.Show("Sie haben " + i + " ms ben”tigt!");}
}
Antworten
-
Hallo Velisch
Der Timer ist für solcheine Aufgabe ungeeignet da er dafür zu langsam ist. Bei mir z.B. schaft er maximal 16ms Interwalle. Für eine Auflösung bis hin zu 1ms gibts die Funktion Environment.TickCount(). Habe dein Beispiel dafür etwas umgearbeitet.
Code Snippet
namespace
time_track{
public partial class Form1 : Form{
private int StartTime = 0; public Form1(){
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e){
StartTime =
Environment.TickCount();//Startzeit merken //Environment.TickCount() ist im Namespace System{}button1.Visible =
false;}
private void Form1_MouseDown(object sender, MouseEventArgs e){
if (e.Button == MouseButtons.Left){
int ElapsedTime = (Environment.TickCount() - StartTime);//Ben”tigte Zeit in ms ermittelnMessageBox.Show(
"Sie haben " + ElapsedTime.ToString() + " ms ben”tigt!");button1.Visible =
true;}
}
}
}
- Als Antwort markiert Mathias Schiffer Dienstag, 24. März 2009 17:58
Alle Antworten
-
Hallo Velisch,
sieht so ganz gut aus und funzt jetzt auch, hattest nur eine Klammer zu viel in Deiner if-Anweisung...
Code Snippetnamespace
WindowsApplication2{
public partial class Form1 : Form{
private double i = 0;public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
button1.Visible = false;
}
private void timer1_Tick(object sender, EventArgs e)
{
i++;
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
timer1.Stop();
MessageBox.Show("Sie haben " + i + " ms benötigt!");
}
}
}
}
Ach ja, die Variable double zeit; wurde nicht genutzt.
Gruß, Doug_HH
-
hey doug,
danke für die schnelle bemühung, aber das is es leider nicht. hab vielleicht die die klammer beim reinkopieren vergessen.
er spuckt mir in der messagebox irgendeine zeit aus, die laut meiner "referenzstoppuhr" gar nicht stimmen kann.
noch dazu auch nur wenn auf die Form1 fläche klick(wo der timer nicht einmal gestartet sein soll).
- stimmt das intervall 1, für millisekunden?
- bzwfängt er richtig zu zählen an?
fg velisch
-
Hallo Velisch,
man sagt, dass der Timer erst ab 500 ms korrekt arbeitet.
Ich habe es noch nicht getestet.
Hier noch ein Vorschlag um die anderen Probleme zu lösen...
Code Snippetusing
System;using
System.Collections.Generic;using
System.ComponentModel;using
System.Data;using
System.Drawing;using
System.Text;using
System.Windows.Forms;namespace
WindowsApplication2{
public partial class Form1 : Form{
private double i = 0; private bool _timerLaeuft = false;//Variable für Timerpublic Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
_timerLaeuft = true;//Variable auf true setzen, wenn der Timer läuft
button1.Visible =
false;}
private void timer1_Tick(object sender, EventArgs e)
{
i++;
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (_timerLaeuft == true)
{
if (e.Button == MouseButtons.Left)
{
timer1.Stop();
_timerLaeuft = false;//Variable auf false setzen, wenn Timer nicht mehr läuft
button1.Visible =
true; MessageBox.Show("Sie haben " + i + " ms benötigt!");i = 0;
//ms auf 0 setzen}
}
}
}
}
-
Hallo Velisch
Der Timer ist für solcheine Aufgabe ungeeignet da er dafür zu langsam ist. Bei mir z.B. schaft er maximal 16ms Interwalle. Für eine Auflösung bis hin zu 1ms gibts die Funktion Environment.TickCount(). Habe dein Beispiel dafür etwas umgearbeitet.
Code Snippet
namespace
time_track{
public partial class Form1 : Form{
private int StartTime = 0; public Form1(){
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e){
StartTime =
Environment.TickCount();//Startzeit merken //Environment.TickCount() ist im Namespace System{}button1.Visible =
false;}
private void Form1_MouseDown(object sender, MouseEventArgs e){
if (e.Button == MouseButtons.Left){
int ElapsedTime = (Environment.TickCount() - StartTime);//Ben”tigte Zeit in ms ermittelnMessageBox.Show(
"Sie haben " + ElapsedTime.ToString() + " ms ben”tigt!");button1.Visible =
true;}
}
}
}
- Als Antwort markiert Mathias Schiffer Dienstag, 24. März 2009 17:58