0
Webサイトからタイマーコードを見つけてアプリケーションで使用しました。タイマーコードはbutton_clickハンドラの中にありますが、メソッドを呼び出すときにタイマーを使用する必要があります。そのため、button_clickからメソッドに同じコードをコピーして貼り付けましたが、タイマーは常にゼロになります。どうすれば修正できますか?button_clickイベントハンドラの中にコード化されていてもタイマーが正常に機能しますが、メソッド内にあれば機能しません
以下は、タイマーコードです。
public partial class Form1 : Form
{
//Timer decleration
DateTime startTime, StopTime;
TimeSpan stoppedTime;
bool reset;
bool startVariabl = true;
// The rest of the code..
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (startVariable) startMethod();
//
//The rest of the code...
}
private void startMethod()
{
//Timer
tmDisplay.Enabled = true;
// Reset display to zero
reset = true;
lblElapsed.Text = "00:00.00.0";
// Start timer and get starting time
if (reset)
{
reset = false;
startTime = DateTime.Now;
stoppedTime = new TimeSpan(0);
}
else
{
stoppedTime += DateTime.Now - StopTime;
}
}
private void tmDisplay_Tick(object sender, EventArgs e)
{
DateTime currentTime;
//Determine Ellapsed Time
currentTime = DateTime.Now;
// Display Time
lblElapsed.Text = HMS(currentTime - startTime - stoppedTime);
}
private string HMS(TimeSpan tms)
{
//Format time as string; leaving off last six decimal places.
string s = tms.ToString();
return (s.Substring(0, s.Length - 6));
}
私は新しいC#ラーナーです。
タイマーのTickイベントに 'tmDisplay_Tick'を添付しましたか? 'tmDisplay'はあなたのタイマーだと仮定していますので、宣言したところで、' tmDisplay.Tick + = new EventHandler(tmDisplay_Tick);を取得し、 'Interval'プロパティを設定してください。 – keyboardP
私はタイマーの宣言や、それを有効にすること以外に何かをしているところが見えません。 – Amy
本当に欲しいのは、「タイマー」ではなく「ストップウォッチ」です。あるいは、あなたは 'Stopwatch'が経過した時間を記録し、' Timer'が定期的にそれを見せたいと思うかもしれません。しかしここに示したコードは不完全であるか、バグがあります。あなたの 'startMethod'の' else'部分は決して実行されないので、 'stoppedTime'は決して更新されません。 –