c#windows窗体的秒表,3台pc';由于未知原因一起开始的-(新编码)
创建1个计时器,并将其分配给c#windows窗体的秒表,3台pc';由于未知原因一起开始的-(新编码),c#,stopwatch,C#,Stopwatch,创建1个计时器,并将其分配给\u timer、\u timerB和\u timerC 而不是: using System; using System.Windows.Forms; namespace Stopwatch { public partial class StopwatchSpikeForm : Form { private Timer _timer, _timerB, _timerC; private DateTime _start
\u timer
、\u timerB
和\u timerC
而不是:
using System;
using System.Windows.Forms;
namespace Stopwatch
{
public partial class StopwatchSpikeForm : Form
{
private Timer _timer, _timerB, _timerC;
private DateTime _startTime = DateTime.MinValue;
private DateTime _startTimeB = DateTime.MinValue;
private DateTime _startTimeC = DateTime.MinValue;
private TimeSpan _currentElapsedTime = TimeSpan.Zero;
private TimeSpan _currentElapsedTimeB = TimeSpan.Zero;
private TimeSpan _currentElapsedTimeC = TimeSpan.Zero;
private TimeSpan _totalElapsedTime = TimeSpan.Zero;
private TimeSpan _totalElapsedTimeB = TimeSpan.Zero;
private TimeSpan _totalElapsedTimeC = TimeSpan.Zero;
private bool _timerRunning = false;
private bool _timerRunningB = false;
private bool _timerRunningC = false;
public StopwatchSpikeForm()
{
InitializeComponent();
_timer = _timerB = _timerC = new Timer();
_timer.Interval = _timerB.Interval = _timerC.Interval = 1000;
_timer.Tick += new EventHandler(_timer_Tick);
_timerB.Tick += new EventHandler(_timerB_Tick);
_timerC.Tick += new EventHandler(_timerC_Tick);
}
void _timer_Tick(object sender, EventArgs e)
{
var timeSinceStartTime = DateTime.Now - _startTime;
timeSinceStartTime = new TimeSpan(timeSinceStartTime.Hours,
timeSinceStartTime.Minutes,
timeSinceStartTime.Seconds);
_currentElapsedTime = timeSinceStartTime + _totalElapsedTime;
_totalElapsedTimeDisplay.Text = _currentElapsedTime.ToString();
_currentElapsedTimeDisplay.Text = timeSinceStartTime.ToString();
}
#region PC
private void startButton_Click(object sender, EventArgs e)
{
if (!_timerRunning)
{
_startTime = DateTime.Now;
_totalElapsedTime = _currentElapsedTime;
_timer.Start();
_timerRunning = true;
}
else
{
_timer.Stop();
_timerRunning = false;
}
}
private void resetButton_Click(object sender, EventArgs e)
{
_timer.Stop();
_timerRunning = false;
_totalElapsedTime = TimeSpan.Zero;
_currentElapsedTime = TimeSpan.Zero;
}
#endregion
#region PC-B
void _timerB_Tick(object sender, EventArgs e)
{
var timeSinceStartTimeB = DateTime.Now - _startTimeB;
timeSinceStartTimeB = new TimeSpan(timeSinceStartTimeB.Hours,
timeSinceStartTimeB.Minutes,
timeSinceStartTimeB.Seconds);
_currentElapsedTimeB = timeSinceStartTimeB + _totalElapsedTimeB;
_totalElapsedTimeDisplayB.Text = _currentElapsedTimeB.ToString();
_currentElapsedTimeDisplayB.Text = timeSinceStartTimeB.ToString();
}
private void startButtonB_Click(object sender, EventArgs e)
{
if (!_timerRunningB)
{
_startTimeB = DateTime.Now;
_totalElapsedTimeB = _currentElapsedTimeB;
_timerB.Start();
_timerRunningB = true;
}
else
{
_timerB.Stop();
_timerRunningB = false;
}
}
private void resetButtonB_Click(object sender, EventArgs e)
{
_timerB.Stop();
_timerRunningB = false;
_totalElapsedTimeB = TimeSpan.Zero;
_currentElapsedTimeB = TimeSpan.Zero;
}
#endregion
#region PC-C
void _timerC_Tick(object sender, EventArgs e)
{
var timeSinceStartTimeC = DateTime.Now - _startTimeC;
timeSinceStartTimeC = new TimeSpan(timeSinceStartTimeC.Hours,
timeSinceStartTimeC.Minutes,
timeSinceStartTimeC.Seconds);
_currentElapsedTimeC = timeSinceStartTimeC + _totalElapsedTimeC;
_totalElapsedTimeDisplayC.Text = _currentElapsedTimeC.ToString();
_currentElapsedTimeDisplayC.Text = timeSinceStartTimeC.ToString();
}
private void startButtonC_Click(object sender, EventArgs e)
{
if (!_timerRunningC)
{
_startTimeC = DateTime.Now;
_totalElapsedTimeC = _currentElapsedTimeC;
_timerC.Start();
_timerRunningC = true;
}
else
{
_timerC.Stop();
_timerRunningC = false;
}
}
private void resetButtonC_Click(object sender, EventArgs e)
{
_timerC.Stop();
_timerRunningC = false;
_totalElapsedTimeC = TimeSpan.Zero;
_currentElapsedTimeC = TimeSpan.Zero;
}
#endregion
}
}
做:
那么你的问题到底是什么?我如何让我的“开始/停止”按钮分别工作?它们是以某种方式联系在一起的,我不明白为什么。你所说的联系是什么意思?检查设计器或代码,看看哪个按钮使用哪个事件。检查构造函数,它看起来像是将三个
计时器对象初始化为同一个实例当我按“开始”按钮时,它在“\u currentElapsedTimeDisplay”和“\u totalElapsedTimeDisplay”中运行时间。问题是,它同时启动我的“\u currentElapsedTimeDisplayB/C”和我的“\u totalElapsedTimeDisplayB/C”。我多次检查按钮是否在其单独的代码块中正确声明。
_timer = _timerB = _timerC = new Timer();
_timer = new Timer();
_timerB = new Timer();
_timerC = new Timer();