Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#windows窗体的秒表,3台pc';由于未知原因一起开始的-(新编码)_C#_Stopwatch - Fatal编程技术网

c#windows窗体的秒表,3台pc';由于未知原因一起开始的-(新编码)

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

创建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 _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();