我从网站上找到了定时器代码,并在我的应用程序中使用它,如果我在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#学习者。
答案 0 :(得分:0)
正如keyboardP在评论中建议的那样,你应该添加这一行:
tmDisplay.Tick += new EventHandler(tmDisplay_Tick);
通常Tick处理程序设置一次(除非您需要将其切换到其他回调或由于某种原因使其无效)所以我会在Form构造函数中添加它,假设已经创建了计时器,或者在计时器初始化之后,如果你这样做用某种方法。