System.Diagnostics - простр ...


Библиотека классов платформы .NET Framework
Stopwatch - класс

Обновлен: Ноябрь 2007

Предоставляет набор методов и средств, которые можно использовать для точного измерения затраченного времени.

Пространство имен:  System.Diagnostics
Сборка:  System (в System.dll)
Синтаксис

Язык Visual Basic (Объявление)
Public Class Stopwatch
Язык Visual Basic (Использование)
Dim instance As Stopwatch
Язык C#
public class Stopwatch
Язык Visual C++
public ref class Stopwatch
Язык J#
public class Stopwatch
Язык JScript
public class Stopwatch
Заметки

Экземпляр Stopwatch может измерять затраченное время для одного интервала или общее затраченное время для нескольких интервалов. В типовом сценарии Stopwatch, вызовите метод Start, затем вызовите метод Stop, и проверьте затраченное время с помощью свойства Elapsed.

Экземпляр Stopwatch выполняется, либо остановлен; используйте свойство IsRunning для определения текущего состояния экземпляра Stopwatch. Чтобы начать измерение затраченного времени, используйте метод Start; чтобы остановить измерение затраченного времени, используйте метод Stop. Выполните запрос затраченного времени при помощи свойств Elapsed, ElapsedMilliseconds, или ElapsedTicks. Можно выполнить запрос свойств затраченного времени во время выполнения или остановки экземпляра. Во время выполнения экземпляра Stopwatch свойства затраченного времени постоянно увеличиваются; они остаются постоянными при остановке выполнения этого экземпляра.

По умолчанию значение затраченного времени экземпляра Stopwatch равно общей сумме всех измеренных интервалов времени. Каждый вызов метода Start начинает подсчет совокупного затраченного времени; каждый вызов метода Stop завершает текущий интервал подсчета и фиксирует совокупное затраченное время. Используйте метод Reset, чтобы очистить совокупное затраченное время в существующем экземпляре Stopwatch.

Экземпляр Stopwatch измеряет затраченное время с помощью подсчета тактов таймера на нижнем уровне временного механизма. Если установленное оборудование и операционная система поддерживают счетчики производительности высокого разрешения, то класс Stopwatch использует этот счетчик для измерения затраченного времени. В противном случае класс Stopwatch использует системный таймер для измерения затраченного времени. Используйте поля Frequency и IsHighResolution для определения точности и разрешения Stopwatch при реализации расчета времени.

Класс Stopwatch полезен для управления в рамках управляемого кода счетчиком производительности, связанным с расчетом времени. В частности, поле Frequency и метод GetTimestamp могут использоваться вместо неуправляемых функций Win32 APIs QueryPerformanceFrequency и QueryPerformanceCounter.

ebf7z0sw.alert_note(ru-ru,VS.90).gifПримечание.

На многопроцессорном компьютере не имеет значения, на каком из процессоров выполняется поток. Однако, из-за ошибок в BIOS или слое абстрагированного оборудования (HAL), можно получить различные результаты расчета времени на различных процессорах. Чтобы задать соответствие процессоров для потока, используйте метод ProcessThread..::.ProcessorAffinity.

Примеры

Следующий пример демонстрирует простое использование класса Stopwatch для определения времени выполнения приложения.

Язык Visual Basic
Imports System
Imports System.Diagnostics
Imports System.Threading


Class Program

    Shared Sub Main(ByVal args() As String)
        Dim stopWatch As New Stopwatch()
        stopWatch.Start()
        Thread.Sleep(10000)
        stopWatch.Stop()
        ' Get the elapsed time as a TimeSpan value.
        Dim ts As TimeSpan = stopWatch.Elapsed

        ' Format and display the TimeSpan value.
        Dim elapsedTime As String = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10)
        Console.WriteLine(elapsedTime, "RunTime")

    End Sub 'Main
End Class 'Program
Язык C#
using System;
using System.Diagnostics;
using System.Threading;
class Program
{
    static void Main(string[] args)
    {
        Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();
        Thread.Sleep(10000);
        stopWatch.Stop();
        // Get the elapsed time as a TimeSpan value.
        TimeSpan ts = stopWatch.Elapsed;

        // Format and display the TimeSpan value.
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
        Console.WriteLine(elapsedTime, "RunTime");
    }
}

В следующем примере класс Stopwatch используется для реализации операций секундомера в приложении Windows Forms.

Язык Visual Basic
Imports System
Imports System.Diagnostics
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Drawing2D

Public Class formMain
    Inherits System.Windows.Forms.Form

    Dim stopWatch As StopWatch
    Dim captureLap As Boolean

    Public Sub New()

        MyBase.New()
        stopwatch = New StopWatch()
        captureLap = False
        InitializeComponent()

    End Sub

    ' Override dispose method to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    Shared Sub Main()
        Application.Run(New formMain)
    End Sub

    ' Define event handlers for various form events.

    Private Sub buttonStartStop_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles buttonStartStop.Click

        ' When the timer is stopped, this button event starts 
        ' the timer.  When the timer is running, this button 
        ' event stops the timer.
        If stopWatch.IsRunning Then

            ' Stop the timer; show the start and reset buttons.
            stopWatch.Stop()
            buttonStartStop.Text = "Start"
            buttonLapReset.Text = "Reset"
        Else
            ' Start the timer; show the stop and lap buttons.
            stopWatch.Start()
            buttonStartStop.Text = "Stop"
            buttonLapReset.Text = "Lap"
            labelLap.Visible = False
            labelLapPrompt.Visible = False
        End If
    End Sub

    Private Sub buttonLapReset_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles buttonLapReset.Click

        ' When the timer is stopped, this button event resets
        ' the timer.  When the timer is running, this button  
        ' event captures a lap time.
        If buttonLapReset.Text = "Lap" Then
            If stopWatch.IsRunning Then

                ' Set the object state so that the next
                ' timer tick will display the lap time value.

                captureLap = True
                labelLap.Visible = True
                labelLapPrompt.Visible = True
            End If
        Else
            ' Reset the stopwatch and the displayed timer value.
            labelTime.Text = "00:00:00.00"
            buttonLapReset.Text = "Lap"
            stopWatch.Reset()
            labelLap.Visible = False
            labelLapPrompt.Visible = False
        End If
    End Sub

    Private Sub timerMain_Tick(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles timerMain.Tick

        ' When the timer is running, update the displayed timer 
        ' value for each tick event.

        If stopWatch.IsRunning Then
            ' Get the elapsed time as a TimeSpan value.
            Dim ts As TimeSpan = stopWatch.Elapsed

            ' Format and display the TimeSpan value.
            labelTime.Text = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", _
                ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds/10)

            ' If the user has just clicked the "Lap" button,
            ' then capture the current time for the lap time.
            If captureLap Then
                labelLap.Text = labelTime.Text
                captureLap = False
            End If
        End If
    End Sub


    Private Sub labelExit_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles labelExit.Click

        ' Close the form when the user clicks the close button.
        Me.Close()
    End Sub

    Private Sub labelTopLeft_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles labelTopLeft.Click

        Me.Location = New Point(0, 0)
    End Sub

    Private Sub labelBottomLeft_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles labelBottomLeft.Click

        Me.Location = New Point(0, Screen.PrimaryScreen.WorkingArea.Height - Me.Height)
    End Sub

    Private Sub labelTopRight_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles labelTopRight.Click

        Me.Location = New Point(Screen.PrimaryScreen.WorkingArea.Width - Me.Width, 0)
    End Sub

    Private Sub labelBottomRight_Click(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles labelBottomRight.Click

        Me.Location = New Point(Screen.PrimaryScreen.WorkingArea.Width - Me.Width, Screen.PrimaryScreen.WorkingArea.Height - Me.Height)
    End Sub

    Private Sub formMain_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles MyBase.Click

        Me.Location = New Point((Screen.PrimaryScreen.WorkingArea.Width - Me.Width) / 2, (Screen.PrimaryScreen.WorkingArea.Height - Me.Height) / 2)
    End Sub

    Private Sub formMain_Load(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles MyBase.Load

        DrawForm()
        Me.Location = New Point((Screen.PrimaryScreen.WorkingArea.Width - Me.Width) / 2, (Screen.PrimaryScreen.WorkingArea.Height - Me.Height) / 2)
    End Sub

    Private Sub DrawForm()

        ' Shape the viewer form with rounded edges.
        Dim GraphicsPath As New Drawing2D.GraphicsPath

        GraphicsPath.AddArc(0, 0, 100, 100, 180, 90)
        GraphicsPath.AddArc(100, 0, 100, 100, 270, 90)
        GraphicsPath.AddArc(100, 100, 100, 100, 0, 90)
        GraphicsPath.AddArc(0, 100, 100, 100, 90, 90)

        Me.Region = New Region(GraphicsPath)
    End Sub

    Private components As System.ComponentModel.IContainer

    Private WithEvents labelExit As System.Windows.Forms.Label
    Private WithEvents labelTime As System.Windows.Forms.Label
    Private WithEvents timerMain As System.Windows.Forms.Timer
    Private WithEvents buttonLapReset As System.Windows.Forms.Button
    Private WithEvents buttonStartStop As System.Windows.Forms.Button
    Private WithEvents labelLapPrompt As System.Windows.Forms.Label
    Private WithEvents labelTimePrompt As System.Windows.Forms.Label
    Private WithEvents labelLap As System.Windows.Forms.Label
    Private WithEvents labelBottomLeft As System.Windows.Forms.Label
    Private WithEvents labelBottomRight As System.Windows.Forms.Label
    Private WithEvents labelTopLeft As System.Windows.Forms.Label
    Private WithEvents labelTopRight As System.Windows.Forms.Label

    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.components = New System.ComponentModel.Container
        Me.labelExit = New System.Windows.Forms.Label
        Me.labelTime = New System.Windows.Forms.Label
        Me.buttonLapReset = New System.Windows.Forms.Button
        Me.timerMain = New System.Windows.Forms.Timer(Me.components)
        Me.labelLap = New System.Windows.Forms.Label
        Me.buttonStartStop = New System.Windows.Forms.Button
        Me.labelLapPrompt = New System.Windows.Forms.Label
        Me.labelTimePrompt = New System.Windows.Forms.Label
        Me.labelBottomLeft = New System.Windows.Forms.Label
        Me.labelBottomRight = New System.Windows.Forms.Label
        Me.labelTopLeft = New System.Windows.Forms.Label
        Me.labelTopRight = New System.Windows.Forms.Label
        Me.SuspendLayout()
        '
        'labelExit
        '
        Me.labelExit.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
        Me.labelExit.ForeColor = System.Drawing.Color.Aqua
        Me.labelExit.Location = New System.Drawing.Point(160, 16)
        Me.labelExit.Name = "labelExit"
        Me.labelExit.Size = New System.Drawing.Size(20, 20)
        Me.labelExit.TabIndex = 0
        Me.labelExit.Text = "x"
        Me.labelExit.TextAlign = System.Drawing.ContentAlignment.BottomCenter
        '
        'labelTime
        '
        Me.labelTime.Font = New System.Drawing.Font("Comic Sans MS", 18.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.labelTime.ForeColor = System.Drawing.Color.Yellow
        Me.labelTime.Location = New System.Drawing.Point(-3, 56)
        Me.labelTime.Name = "labelTime"
        Me.labelTime.Size = New System.Drawing.Size(208, 32)
        Me.labelTime.TabIndex = 1
        Me.labelTime.Text = "00:00:00.00"
        '
        'buttonLapReset
        '
        Me.buttonLapReset.Font = New System.Drawing.Font("Comic Sans MS", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.buttonLapReset.ForeColor = System.Drawing.Color.Yellow
        Me.buttonLapReset.Location = New System.Drawing.Point(104, 160)
        Me.buttonLapReset.Name = "buttonLapReset"
        Me.buttonLapReset.Size = New System.Drawing.Size(72, 32)
        Me.buttonLapReset.TabIndex = 4
        Me.buttonLapReset.Text = "Lap"
        '
        'timerMain
        '
        Me.timerMain.Enabled = True
        Me.timerMain.Interval = 50
        '
        'labelLap
        '
        Me.labelLap.Font = New System.Drawing.Font("Comic Sans MS", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.labelLap.ForeColor = System.Drawing.Color.Yellow
        Me.labelLap.Location = New System.Drawing.Point(0, 120)
        Me.labelLap.Name = "labelLap"
        Me.labelLap.Size = New System.Drawing.Size(200, 32)
        Me.labelLap.TabIndex = 5
        Me.labelLap.Visible = False
        '
        'buttonStartStop
        '
        Me.buttonStartStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat
        Me.buttonStartStop.Font = New System.Drawing.Font("Comic Sans MS", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.buttonStartStop.ForeColor = System.Drawing.Color.Yellow
        Me.buttonStartStop.Location = New System.Drawing.Point(24, 160)
        Me.buttonStartStop.Name = "buttonStartStop"
        Me.buttonStartStop.Size = New System.Drawing.Size(72, 32)
        Me.buttonStartStop.TabIndex = 2
        Me.buttonStartStop.Text = "Start"
        '
        'labelLapPrompt
        '
        Me.labelLapPrompt.Font = New System.Drawing.Font("Comic Sans MS", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.labelLapPrompt.ForeColor = System.Drawing.Color.Yellow
        Me.labelLapPrompt.Location = New System.Drawing.Point(8, 96)
        Me.labelLapPrompt.Name = "labelLapPrompt"
        Me.labelLapPrompt.Size = New System.Drawing.Size(96, 24)
        Me.labelLapPrompt.TabIndex = 6
        Me.labelLapPrompt.Text = "Lap Time"
        Me.labelLapPrompt.Visible = False
        '
        'labelTimePrompt
        '
        Me.labelTimePrompt.Font = New System.Drawing.Font("Comic Sans MS", 15.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.labelTimePrompt.ForeColor = System.Drawing.Color.Yellow
        Me.labelTimePrompt.Location = New System.Drawing.Point(0, 24)
        Me.labelTimePrompt.Name = "labelTimePrompt"
        Me.labelTimePrompt.Size = New System.Drawing.Size(88, 24)
        Me.labelTimePrompt.TabIndex = 7
        Me.labelTimePrompt.Text = "Time"
        '
        'labelBottomLeft
        '
        Me.labelBottomLeft.BackColor = System.Drawing.Color.Black
        Me.labelBottomLeft.ForeColor = System.Drawing.Color.Black
        Me.labelBottomLeft.Location = New System.Drawing.Point(0, 176)
        Me.labelBottomLeft.Name = "labelBottomLeft"
        Me.labelBottomLeft.Size = New System.Drawing.Size(16, 16)
        Me.labelBottomLeft.TabIndex = 8
        '
        'labelBottomRight
        '
        Me.labelBottomRight.BackColor = System.Drawing.Color.Black
        Me.labelBottomRight.ForeColor = System.Drawing.Color.Black
        Me.labelBottomRight.Location = New System.Drawing.Point(184, 176)
        Me.labelBottomRight.Name = "labelBottomRight"
        Me.labelBottomRight.Size = New System.Drawing.Size(16, 16)
        Me.labelBottomRight.TabIndex = 9
        '
        'labelTopLeft
        '
        Me.labelTopLeft.BackColor = System.Drawing.Color.Black
        Me.labelTopLeft.ForeColor = System.Drawing.Color.Black
        Me.labelTopLeft.Location = New System.Drawing.Point(0, 8)
        Me.labelTopLeft.Name = "labelTopLeft"
        Me.labelTopLeft.Size = New System.Drawing.Size(16, 16)
        Me.labelTopLeft.TabIndex = 10
        '
        'labelTopRight
        '
        Me.labelTopRight.BackColor = System.Drawing.Color.Black
        Me.labelTopRight.ForeColor = System.Drawing.Color.Black
        Me.labelTopRight.Location = New System.Drawing.Point(184, 8)
        Me.labelTopRight.Name = "labelTopRight"
        Me.labelTopRight.Size = New System.Drawing.Size(16, 16)
        Me.labelTopRight.TabIndex = 11
        '
        'formMain
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(9, 22)
        Me.BackColor = System.Drawing.Color.Navy
        Me.ClientSize = New System.Drawing.Size(200, 200)
        Me.Controls.Add(Me.labelTopRight)
        Me.Controls.Add(Me.labelTopLeft)
        Me.Controls.Add(Me.labelBottomRight)
        Me.Controls.Add(Me.labelBottomLeft)
        Me.Controls.Add(Me.labelTimePrompt)
        Me.Controls.Add(Me.labelLapPrompt)
        Me.Controls.Add(Me.labelLap)
        Me.Controls.Add(Me.buttonLapReset)
        Me.Controls.Add(Me.buttonStartStop)
        Me.Controls.Add(Me.labelTime)
        Me.Controls.Add(Me.labelExit)
        Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
        Me.Name = "formMain"
        Me.Text = "StopWatch Sample"
        Me.TopMost = True
        Me.ResumeLayout(False)

    End Sub

End Class
Язык C#
using System;
using System.Diagnostics;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;

namespace StopWatchSample
{    
    public class FormMain : System.Windows.Forms.Form
    {
        private Stopwatch stopWatch;
        private Boolean captureLap;

        public FormMain()
        {
            stopWatch = new Stopwatch();
            captureLap = false;

            InitializeComponent();
        }

        protected override void Dispose( bool disposing )
        {
            base.Dispose( disposing );
        }

        [STAThread]
        static void Main() 
        {
            Application.Run(new FormMain());
        }

        // Define event handlers for various form events.

        private void buttonStartStop_Click(System.Object sender, 
            System.EventArgs e)
        {
            // When the timer is stopped, this button event starts 
            // the timer.  When the timer is running, this button 
            // event stops the timer.
            if (stopWatch.IsRunning)
            {
                // Stop the timer; show the start and reset buttons.
                stopWatch.Stop();
                buttonStartStop.Text = "Start";
                buttonLapReset.Text = "Reset";
            }
            else 
            {
                // Start the timer; show the stop and lap buttons.
                stopWatch.Start();
                buttonStartStop.Text = "Stop";
                buttonLapReset.Text = "Lap";
                labelLap.Visible = false;
                labelLapPrompt.Visible = false;
            }
        }

        private void buttonLapReset_Click(System.Object sender, 
                                     System.EventArgs e)
        {
            // When the timer is stopped, this button event resets
            // the timer.  When the timer is running, this button  
            // event captures a lap time.

            if (buttonLapReset.Text == "Lap")
            {
                if (stopWatch.IsRunning)
                {
                    // Set the object state so that the next
                    // timer tick will display the lap time value.

                    captureLap = true;
                    labelLap.Visible = true;
                    labelLapPrompt.Visible = true;
                }
            }
            else 
            {
                // Reset the stopwatch and the displayed timer value.

                labelLap.Visible = false;
                labelLapPrompt.Visible = false;
                labelTime.Text = "00:00:00.00";
                buttonLapReset.Text = "Lap";
                stopWatch.Reset();
            }        
        }

        private void timerMain_Tick(System.Object sender, 
                                    System.EventArgs e)
        {
            // When the timer is running, update the displayed timer 
            // value for each tick event.

            if (stopWatch.IsRunning)
            {
                // Get the elapsed time as a TimeSpan value.
                TimeSpan ts = stopWatch.Elapsed;

                // Format and display the TimeSpan value.
                labelTime.Text = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", 
                    ts.Hours, ts.Minutes, ts.Seconds, 
                    ts.Milliseconds/10);

                // If the user has just clicked the "Lap" button,
                // then capture the current time for the lap time.

                if (captureLap)
                {
                    labelLap.Text = labelTime.Text;
                    captureLap = false;
                }
            }
        }

        private void labelExit_Click(System.Object sender, 
            System.EventArgs e)
        {
            // Close the form when the user clicks the close button.
            this.Close();
        }

        private void labelTopLeft_Click(object sender, System.EventArgs e)
        {
            this.Location = new Point(0, 0);
        }

        private void labelBottomLeft_Click(object sender, System.EventArgs e)
        {
            this.Location = new Point(0, Screen.PrimaryScreen.WorkingArea.Height - this.Height);
        }

        private void labelTopRight_Click(object sender, System.EventArgs e)
        {
            this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, 0);
        }

        private void labelBottomRight_Click(object sender, System.EventArgs e)
        {
            this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, 
                                 Screen.PrimaryScreen.WorkingArea.Height - this.Height);
        }

        private void FormMain_Click(object sender, System.EventArgs e)
        {
            this.Location = new Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2, 
                                 (Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);
        }

        private void FormMain_Load(object sender, System.EventArgs e)
        {
            // Shape the viewer form with rounded edges.

            DrawForm();
            this.Location = new Point((Screen.PrimaryScreen.WorkingArea.Width - this.Width) / 2, 
                                 (Screen.PrimaryScreen.WorkingArea.Height - this.Height) / 2);

        }

        private void DrawForm()
        {
            // Shape the viewer form with rounded edges.
            GraphicsPath graphicsPath = new GraphicsPath();

            graphicsPath.AddArc(0, 0, 100, 100, 180, 90);
            graphicsPath.AddArc(100, 0, 100, 100, 270, 90);
            graphicsPath.AddArc(100, 100, 100, 100, 0, 90);
            graphicsPath.AddArc(0, 100, 100, 100, 90, 90);

            this.Region = new Region(graphicsPath);
        }

        // Define various form elements.

        private System.ComponentModel.Container components = null;

        private System.Windows.Forms.Label labelExit;
        private System.Windows.Forms.Label labelTime;
        private System.Windows.Forms.Timer timerMain;
        private System.Windows.Forms.Button buttonLapReset;
        private System.Windows.Forms.Button buttonStartStop;
        private System.Windows.Forms.Label labelLapPrompt;
        private System.Windows.Forms.Label labelTimePrompt;
        private System.Windows.Forms.Label labelLap;
        private System.Windows.Forms.Label labelBottomLeft;
        private System.Windows.Forms.Label labelBottomRight;
        private System.Windows.Forms.Label labelTopLeft;
        private System.Windows.Forms.Label labelTopRight;

        private void InitializeComponent()
        {
            this.SuspendLayout();            

            this.components = new System.ComponentModel.Container();
            this.labelExit = new System.Windows.Forms.Label();
            this.labelTime = new System.Windows.Forms.Label();
            this.buttonLapReset = new System.Windows.Forms.Button();
            this.timerMain = new System.Windows.Forms.Timer(this.components);
            this.labelLap = new System.Windows.Forms.Label();
            this.buttonStartStop = new System.Windows.Forms.Button();
            this.labelLapPrompt = new System.Windows.Forms.Label();
            this.labelTimePrompt = new System.Windows.Forms.Label();
            this.labelBottomLeft = new System.Windows.Forms.Label();
            this.labelBottomRight = new System.Windows.Forms.Label();
            this.labelTopLeft = new System.Windows.Forms.Label();
            this.labelTopRight = new System.Windows.Forms.Label();

            // labelExit

            this.labelExit.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
            this.labelExit.ForeColor = System.Drawing.Color.Aqua;
            this.labelExit.Location = new System.Drawing.Point(160, 16);
            this.labelExit.Name = "labelExit";
            this.labelExit.Size = new System.Drawing.Size(20, 20);
            this.labelExit.TabIndex = 0;
            this.labelExit.Text = "x";
            this.labelExit.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
            this.labelExit.Click += new System.EventHandler(this.labelExit_Click);            

            // labelTime

            this.labelTime.Font = new System.Drawing.Font("Comic Sans MS", 18.0F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
            this.labelTime.ForeColor = System.Drawing.Color.Yellow;
            this.labelTime.Location = new System.Drawing.Point(-3, 56);
            this.labelTime.Name = "labelTime";
            this.labelTime.Size = new System.Drawing.Size(208, 32);
            this.labelTime.TabIndex = 1;
            this.labelTime.Text = "00:00:00.00";

            // buttonLapReset

            this.buttonLapReset.Font = new System.Drawing.Font("Comic Sans MS", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
            this.buttonLapReset.ForeColor = System.Drawing.Color.Yellow;
            this.buttonLapReset.Location = new System.Drawing.Point(104, 160);
            this.buttonLapReset.Name = "buttonLapReset";
            this.buttonLapReset.Size = new System.Drawing.Size(72, 32);
            this.buttonLapReset.TabIndex = 4;
            this.buttonLapReset.Text = "Lap";
            this.buttonLapReset.Click += new System.EventHandler(this.buttonLapReset_Click);            

            // timerMain

            this.timerMain.Enabled = true;
            this.timerMain.Interval = 50;
            this.timerMain.Tick += new System.EventHandler(this.timerMain_Tick);            

            // labelLap

            this.labelLap.Font = new System.Drawing.Font("Comic Sans MS", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
            this.labelLap.ForeColor = System.Drawing.Color.Yellow;
            this.labelLap.Location = new System.Drawing.Point(0, 120);
            this.labelLap.Name = "labelLap";
            this.labelLap.Size = new System.Drawing.Size(200, 32);
            this.labelLap.TabIndex = 5;
            this.labelLap.Visible = false;

            // buttonStartStop

            this.buttonStartStop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
            this.buttonStartStop.Font = new System.Drawing.Font("Comic Sans MS", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
            this.buttonStartStop.ForeColor = System.Drawing.Color.Yellow;
            this.buttonStartStop.Location = new System.Drawing.Point(24, 160);
            this.buttonStartStop.Name = "buttonStartStop";
            this.buttonStartStop.Size = new System.Drawing.Size(72, 32);
            this.buttonStartStop.TabIndex = 2;
            this.buttonStartStop.Text = "Start";
            this.buttonStartStop.Click += new System.EventHandler(this.buttonStartStop_Click);            

            // labelLapPrompt

            this.labelLapPrompt.Font = new System.Drawing.Font("Comic Sans MS", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
            this.labelLapPrompt.ForeColor = System.Drawing.Color.Yellow;
            this.labelLapPrompt.Location = new System.Drawing.Point(8, 96);
            this.labelLapPrompt.Name = "labelLapPrompt";
            this.labelLapPrompt.Size = new System.Drawing.Size(56, 24);
            this.labelLapPrompt.TabIndex = 6;
            this.labelLapPrompt.Text = "Lap Time";
            this.labelLapPrompt.Visible = false;

            // labelTimePrompt

            this.labelTimePrompt.Font = new System.Drawing.Font("Comic Sans MS", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
            this.labelTimePrompt.ForeColor = System.Drawing.Color.Yellow;
            this.labelTimePrompt.Location = new System.Drawing.Point(0, 24);
            this.labelTimePrompt.Name = "labelTimePrompt";
            this.labelTimePrompt.Size = new System.Drawing.Size(88, 24);
            this.labelTimePrompt.TabIndex = 7;
            this.labelTimePrompt.Text = "Time";

            // labelBottomLeft

            this.labelBottomLeft.BackColor = System.Drawing.Color.Black;
            this.labelBottomLeft.ForeColor = System.Drawing.Color.Black;
            this.labelBottomLeft.Location = new System.Drawing.Point(0, 176);
            this.labelBottomLeft.Name = "labelBottomLeft";
            this.labelBottomLeft.Size = new System.Drawing.Size(16, 16);
            this.labelBottomLeft.TabIndex = 8;
            this.labelBottomLeft.Click += new System.EventHandler(this.labelBottomLeft_Click);            

            // labelBottomRight

            this.labelBottomRight.BackColor = System.Drawing.Color.Black;
            this.labelBottomRight.ForeColor = System.Drawing.Color.Black;
            this.labelBottomRight.Location = new System.Drawing.Point(184, 176);
            this.labelBottomRight.Name = "labelBottomRight";
            this.labelBottomRight.Size = new System.Drawing.Size(16, 16);
            this.labelBottomRight.TabIndex = 9;
            this.labelBottomRight.Click += new System.EventHandler(this.labelBottomRight_Click);            

            // labelTopLeft

            this.labelTopLeft.BackColor = System.Drawing.Color.Black;
            this.labelTopLeft.ForeColor = System.Drawing.Color.Black;
            this.labelTopLeft.Location = new System.Drawing.Point(0, 8);
            this.labelTopLeft.Name = "labelTopLeft";
            this.labelTopLeft.Size = new System.Drawing.Size(16, 16);
            this.labelTopLeft.TabIndex = 10;
            this.labelTopLeft.Click += new System.EventHandler(this.labelTopLeft_Click);            

            // labelTopRight

            this.labelTopRight.BackColor = System.Drawing.Color.Black;
            this.labelTopRight.ForeColor = System.Drawing.Color.Black;
            this.labelTopRight.Location = new System.Drawing.Point(184, 8);
            this.labelTopRight.Name = "labelTopRight";
            this.labelTopRight.Size = new System.Drawing.Size(16, 16);
            this.labelTopRight.TabIndex = 11;
            this.labelTopRight.Click += new System.EventHandler(this.labelTopRight_Click);            


            // FormMain

            this.AutoScaleBaseSize = new System.Drawing.Size(9, 22);
            this.BackColor = System.Drawing.Color.Navy;
            this.ClientSize = new System.Drawing.Size(200, 200);
            this.Controls.Add(this.labelTopRight);
            this.Controls.Add(this.labelTopLeft);
            this.Controls.Add(this.labelBottomRight);
            this.Controls.Add(this.labelBottomLeft);
            this.Controls.Add(this.labelTimePrompt);
            this.Controls.Add(this.labelLapPrompt);
            this.Controls.Add(this.labelLap);
            this.Controls.Add(this.buttonLapReset);
            this.Controls.Add(this.buttonStartStop);
            this.Controls.Add(this.labelTime);
            this.Controls.Add(this.labelExit);
            this.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Name = "FormMain";
            this.Text = "StopWatch Sample";
            this.TopMost = true;
            this.Load += new System.EventHandler(this.FormMain_Load);            

            this.ResumeLayout(false);
        }
    }
}
Язык Visual C++
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System::Drawing::Drawing2D;

// The following class represents a simple stopwatch form with
// start, stop, reset, and lap time functions.
public ref class FormMain: public System::Windows::Forms::Form
{
private:
   Stopwatch^ stopWatch;
   Boolean captureLap;

public:
   FormMain()
   {
      stopWatch = gcnew Stopwatch;
      captureLap = false;
      InitializeComponent();
   }


public:
   ~FormMain()
   {
   }

private:
   // Define event handlers for various form events.
   void buttonStartStop_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      // When the timer is stopped, this button event starts 
      // the timer.  When the timer is running, this button 
      // event stops the timer.
      if ( stopWatch->IsRunning )
      {
         // Stop the timer; show the start and reset buttons.
         stopWatch->Stop();
         buttonStartStop->Text = "Start";
         buttonLapReset->Text = "Reset";
      }
      else
      {
         // Start the timer; show the stop and lap buttons.
         stopWatch->Start();
         buttonStartStop->Text = "Stop";
         buttonLapReset->Text = "Lap";
         labelLap->Visible = false;
         labelLapPrompt->Visible = false;
      }
   }

   void buttonLapReset_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      // When the timer is stopped, this button event resets
      // the timer.  When the timer is running, this button  
      // event captures a lap time.
      if ( buttonLapReset->Text->Equals( "Lap" ) )
      {
         if ( stopWatch->IsRunning )
         {
            // Set set the object state so that the next
            // timer tick will display the lap time value.
            captureLap = true;
            labelLap->Visible = true;
            labelLapPrompt->Visible = true;
         }
      }
      else
      {
         // Reset the stopwatch and the displayed timer value.
         labelLap->Visible = false;
         labelLapPrompt->Visible = false;
         labelTime->Text = "00:00:00.00";
         buttonLapReset->Text = "Lap";
         stopWatch->Reset();
      }
   }

   void timerMain_Tick( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {

      // When the timer is running, update the displayed timer 
      // value for each tick event.
      if ( stopWatch->IsRunning )
      {

         // Get the elapsed time as a TimeSpan value.
         TimeSpan ts = stopWatch->Elapsed;

         // Format and display the TimeSpan value.
         labelTime->Text = String::Format( "{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10 );

         // If the user has just clicked the "Lap" button,
         // then capture the current time for the lap time.
         if ( captureLap )
         {
            labelLap->Text = labelTime->Text;
            captureLap = false;
         }
      }
   }

   void labelExit_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      // Close the form when the user clicks the close button.
      this->Close();
   }

   void labelTopLeft_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->Location = Point(0,0);
   }

   void labelBottomLeft_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->Location = Point(0,Screen::PrimaryScreen->WorkingArea.Height - this->Height);
   }

   void labelTopRight_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->Location = Point(Screen::PrimaryScreen->WorkingArea.Width - this->Width,0);
   }

   void labelBottomRight_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->Location = Point(Screen::PrimaryScreen->WorkingArea.Width - this->Width,Screen::PrimaryScreen->WorkingArea.Height - this->Height);
   }

   void FormMain_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      this->Location = Point((Screen::PrimaryScreen->WorkingArea.Width - this->Width) / 2,(Screen::PrimaryScreen->WorkingArea.Height - this->Height) / 2);
   }

   void FormMain_Load( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      // Shape the viewer form with rounded edges.
      DrawForm();
      this->Location = Point((Screen::PrimaryScreen->WorkingArea.Width - this->Width) / 2,(Screen::PrimaryScreen->WorkingArea.Height - this->Height) / 2);
   }

   void DrawForm()
   {
      // Shape the viewer form with rounded edges.
      GraphicsPath^ graphicsPath = gcnew GraphicsPath;
      graphicsPath->AddArc( 0, 0, 100, 100, 180, 90 );
      graphicsPath->AddArc( 100, 0, 100, 100, 270, 90 );
      graphicsPath->AddArc( 100, 100, 100, 100, 0, 90 );
      graphicsPath->AddArc( 0, 100, 100, 100, 90, 90 );
      this->Region = gcnew System::Drawing::Region( graphicsPath );
   }

   // Define various form elements.
   System::ComponentModel::Container^ components;
   System::Windows::Forms::Label ^ labelExit;
   System::Windows::Forms::Label ^ labelTime;
   System::Windows::Forms::Timer^ timerMain;
   System::Windows::Forms::Button^ buttonLapReset;
   System::Windows::Forms::Button^ buttonStartStop;
   System::Windows::Forms::Label ^ labelLapPrompt;
   System::Windows::Forms::Label ^ labelTimePrompt;
   System::Windows::Forms::Label ^ labelLap;
   System::Windows::Forms::Label ^ labelBottomLeft;
   System::Windows::Forms::Label ^ labelBottomRight;
   System::Windows::Forms::Label ^ labelTopLeft;
   System::Windows::Forms::Label ^ labelTopRight;
   void InitializeComponent()
   {
      this->SuspendLayout();
      this->components = gcnew System::ComponentModel::Container;
      this->labelExit = gcnew System::Windows::Forms::Label;
      this->labelTime = gcnew System::Windows::Forms::Label;
      this->buttonLapReset = gcnew System::Windows::Forms::Button;
      this->timerMain = gcnew System::Windows::Forms::Timer( this->components );
      this->labelLap = gcnew System::Windows::Forms::Label;
      this->buttonStartStop = gcnew System::Windows::Forms::Button;
      this->labelLapPrompt = gcnew System::Windows::Forms::Label;
      this->labelTimePrompt = gcnew System::Windows::Forms::Label;
      this->labelBottomLeft = gcnew System::Windows::Forms::Label;
      this->labelBottomRight = gcnew System::Windows::Forms::Label;
      this->labelTopLeft = gcnew System::Windows::Forms::Label;
      this->labelTopRight = gcnew System::Windows::Forms::Label;

      // labelExit
      this->labelExit->BorderStyle = System::Windows::Forms::BorderStyle::Fixed3D;
      this->labelExit->ForeColor = System::Drawing::Color::Aqua;
      this->labelExit->Location = System::Drawing::Point( 160, 16 );
      this->labelExit->Name = "labelExit";
      this->labelExit->Size = System::Drawing::Size( 20, 20 );
      this->labelExit->TabIndex = 0;
      this->labelExit->Text = "x";
      this->labelExit->TextAlign = System::Drawing::ContentAlignment::BottomCenter;
      this->labelExit->Click += gcnew System::EventHandler( this, &FormMain::labelExit_Click );

      // labelTime
      this->labelTime->Font = gcnew System::Drawing::Font( "Comic Sans MS",18.0F,System::Drawing::FontStyle::Bold,System::Drawing::GraphicsUnit::Point );
      this->labelTime->ForeColor = System::Drawing::Color::Yellow;
      this->labelTime->Location = System::Drawing::Point(  -3, 56 );
      this->labelTime->Name = "labelTime";
      this->labelTime->Size = System::Drawing::Size( 208, 32 );
      this->labelTime->TabIndex = 1;
      this->labelTime->Text = "00:00:00.00";

      // buttonLapReset
      this->buttonLapReset->Font = gcnew System::Drawing::Font( "Comic Sans MS",14.25F,System::Drawing::FontStyle::Bold,System::Drawing::GraphicsUnit::Point );
      this->buttonLapReset->ForeColor = System::Drawing::Color::Yellow;
      this->buttonLapReset->Location = System::Drawing::Point( 104, 160 );
      this->buttonLapReset->Name = "buttonLapReset";
      this->buttonLapReset->Size = System::Drawing::Size( 72, 32 );
      this->buttonLapReset->TabIndex = 4;
      this->buttonLapReset->Text = "Lap";
      this->buttonLapReset->Click += gcnew System::EventHandler( this, &FormMain::buttonLapReset_Click );

      // timerMain
      this->timerMain->Enabled = true;
      this->timerMain->Interval = 50;
      this->timerMain->Tick += gcnew System::EventHandler( this, &FormMain::timerMain_Tick );

      // labelLap
      this->labelLap->Font = gcnew System::Drawing::Font( "Comic Sans MS",14.25F,System::Drawing::FontStyle::Regular,System::Drawing::GraphicsUnit::Point );
      this->labelLap->ForeColor = System::Drawing::Color::Yellow;
      this->labelLap->Location = System::Drawing::Point( 0, 120 );
      this->labelLap->Name = "labelLap";
      this->labelLap->Size = System::Drawing::Size( 200, 32 );
      this->labelLap->TabIndex = 5;
      this->labelLap->Visible = false;

      // buttonStartStop
      this->buttonStartStop->FlatStyle = System::Windows::Forms::FlatStyle::Flat;
      this->buttonStartStop->Font = gcnew System::Drawing::Font( "Comic Sans MS",14.25F,System::Drawing::FontStyle::Bold,System::Drawing::GraphicsUnit::Point );
      this->buttonStartStop->ForeColor = System::Drawing::Color::Yellow;
      this->buttonStartStop->Location = System::Drawing::Point( 24, 160 );
      this->buttonStartStop->Name = "buttonStartStop";
      this->buttonStartStop->Size = System::Drawing::Size( 72, 32 );
      this->buttonStartStop->TabIndex = 2;
      this->buttonStartStop->Text = "Start";
      this->buttonStartStop->Click += gcnew System::EventHandler( this, &FormMain::buttonStartStop_Click );

      // labelLapPrompt
      this->labelLapPrompt->Font = gcnew System::Drawing::Font( "Comic Sans MS",14.25F,System::Drawing::FontStyle::Regular,System::Drawing::GraphicsUnit::Point );
      this->labelLapPrompt->ForeColor = System::Drawing::Color::Yellow;
      this->labelLapPrompt->Location = System::Drawing::Point( 8, 96 );
      this->labelLapPrompt->Name = "labelLapPrompt";
      this->labelLapPrompt->Size = System::Drawing::Size( 56, 24 );
      this->labelLapPrompt->TabIndex = 6;
      this->labelLapPrompt->Text = "Lap Time";
      this->labelLapPrompt->Visible = false;

      // labelTimePrompt
      this->labelTimePrompt->Font = gcnew System::Drawing::Font( "Comic Sans MS",15.75F,System::Drawing::FontStyle::Regular,System::Drawing::GraphicsUnit::Point );
      this->labelTimePrompt->ForeColor = System::Drawing::Color::Yellow;
      this->labelTimePrompt->Location = System::Drawing::Point( 0, 24 );
      this->labelTimePrompt->Name = "labelTimePrompt";
      this->labelTimePrompt->Size = System::Drawing::Size( 88, 24 );
      this->labelTimePrompt->TabIndex = 7;
      this->labelTimePrompt->Text = "Time";

      // labelBottomLeft
      this->labelBottomLeft->BackColor = System::Drawing::Color::Black;
      this->labelBottomLeft->ForeColor = System::Drawing::Color::Black;
      this->labelBottomLeft->Location = System::Drawing::Point( 0, 176 );
      this->labelBottomLeft->Name = "labelBottomLeft";
      this->labelBottomLeft->Size = System::Drawing::Size( 16, 16 );
      this->labelBottomLeft->TabIndex = 8;
      this->labelBottomLeft->Click += gcnew System::EventHandler( this, &FormMain::labelBottomLeft_Click );

      // labelBottomRight
      this->labelBottomRight->BackColor = System::Drawing::Color::Black;
      this->labelBottomRight->ForeColor = System::Drawing::Color::Black;
      this->labelBottomRight->Location = System::Drawing::Point( 184, 176 );
      this->labelBottomRight->Name = "labelBottomRight";
      this->labelBottomRight->Size = System::Drawing::Size( 16, 16 );
      this->labelBottomRight->TabIndex = 9;
      this->labelBottomRight->Click += gcnew System::EventHandler( this, &FormMain::labelBottomRight_Click );

      // labelTopLeft
      this->labelTopLeft->BackColor = System::Drawing::Color::Black;
      this->labelTopLeft->ForeColor = System::Drawing::Color::Black;
      this->labelTopLeft->Location = System::Drawing::Point( 0, 8 );
      this->labelTopLeft->Name = "labelTopLeft";
      this->labelTopLeft->Size = System::Drawing::Size( 16, 16 );
      this->labelTopLeft->TabIndex = 10;
      this->labelTopLeft->Click += gcnew System::EventHandler( this, &FormMain::labelTopLeft_Click );

      // labelTopRight
      this->labelTopRight->BackColor = System::Drawing::Color::Black;
      this->labelTopRight->ForeColor = System::Drawing::Color::Black;
      this->labelTopRight->Location = System::Drawing::Point( 184, 8 );
      this->labelTopRight->Name = "labelTopRight";
      this->labelTopRight->Size = System::Drawing::Size( 16, 16 );
      this->labelTopRight->TabIndex = 11;
      this->labelTopRight->Click += gcnew System::EventHandler( this, &FormMain::labelTopRight_Click );

      // FormMain
      this->AutoScaleBaseSize = System::Drawing::Size( 9, 22 );
      this->BackColor = System::Drawing::Color::Navy;
      this->ClientSize = System::Drawing::Size( 200, 200 );
      this->Controls->Add( this->labelTopRight );
      this->Controls->Add( this->labelTopLeft );
      this->Controls->Add( this->labelBottomRight );
      this->Controls->Add( this->labelBottomLeft );
      this->Controls->Add( this->labelTimePrompt );
      this->Controls->Add( this->labelLapPrompt );
      this->Controls->Add( this->labelLap );
      this->Controls->Add( this->buttonLapReset );
      this->Controls->Add( this->buttonStartStop );
      this->Controls->Add( this->labelTime );
      this->Controls->Add( this->labelExit );
      this->Font = gcnew System::Drawing::Font( "Microsoft Sans Serif",14.25F,System::Drawing::FontStyle::Regular,System::Drawing::GraphicsUnit::Point );
      this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::None;
      this->Name = "FormMain";
      this->Text = "StopWatch Sample";
      this->TopMost = true;
      this->Load += gcnew System::EventHandler( this, &FormMain::FormMain_Load );
      this->ResumeLayout( false );
   }
};

[STAThread]
int main()
{
   Application::Run( gcnew FormMain );
}
Язык J#
import System.*;
import System.Diagnostics.*;
import System.Windows.Forms.*;
import System.Drawing.*;
import System.Drawing.Drawing2D.*;

public class FormMain extends System.Windows.Forms.Form
{
    private Stopwatch stopWatch;
    private Boolean captureLap;

    public FormMain()
    {
        stopWatch = new Stopwatch();
        captureLap = new Boolean(false);

        InitializeComponent();
    } //FormMain

    protected void Dispose(boolean disposing)
    {
        super.Dispose(disposing);
    } //Dispose

    /** @attribute STAThread()
     */
    public static void main(String[] args)
    {
        Application.Run(new FormMain());
    } //main

    // Define event handlers for various form events.
    private void buttonStartStop_Click(Object sender, System.EventArgs e)
    {
        // When the timer is stopped, this button event starts 
        // the timer.  When the timer is running, this button 
        // event stops the timer.
        if (stopWatch.get_IsRunning()) {
            // Stop the timer; show the start and reset buttons.
            stopWatch.Stop();
            buttonStartStop.set_Text("Start");
            buttonLapReset.set_Text("Reset");
        }
        else {
            // Start the timer; show the stop and lap buttons.
            stopWatch.Start();
            buttonStartStop.set_Text("Stop");
            buttonLapReset.set_Text("Lap");
            labelLap.set_Visible(false);
            labelLapPrompt.set_Visible(false);
        }
    } //buttonStartStop_Click

    private void buttonLapReset_Click(Object sender, System.EventArgs e)
    {
        // When the timer is stopped, this button event resets
        // the timer.  When the timer is running, this button  
        // event captures a lap time.
        if (buttonLapReset.get_Text().Equals("Lap")) {
            if (stopWatch.get_IsRunning()) {
                // Set the object state so that the next
                // timer tick will display the lap time value.
                captureLap = new Boolean(true);
                labelLap.set_Visible(true);
                labelLapPrompt.set_Visible(true);
            }
        }
        else {
            // Reset the stopwatch and the displayed timer value.
            labelLap.set_Visible(false);
            labelLapPrompt.set_Visible(false);
            labelTime.set_Text("00:00:00.00");
            buttonLapReset.set_Text("Lap");
            stopWatch.Reset();
        } 
    } //buttonLapReset_Click

    private void timerMain_Tick(Object sender, System.EventArgs e)
    {
        // When the timer is running, update the displayed timer 
        // value for each tick event.
        if (stopWatch.get_IsRunning()) {
            // Get the elapsed time as a TimeSpan value.
            TimeSpan ts = stopWatch.get_Elapsed();
            // Format and display the TimeSpan value.
            labelTime.set_Text(((System.Int32)ts.get_Hours()).ToString("00") 
                + ":" + ((System.Int32)ts.get_Minutes()).ToString("00") 
                + ":" + ((System.Int32)ts.get_Seconds()).ToString("00") 
                + "." + ((System.Int32)(ts.get_Milliseconds() / 10)).
                ToString("00"));
            // If the user has just clicked the "Lap" button,
            // then capture the current time for the lap time.
            if (System.Convert.ToBoolean(captureLap)) {
                labelLap.set_Text(labelTime.get_Text());
                captureLap = new Boolean(false);
            }
        }
    } //timerMain_Tick

    private void labelExit_Click(Object sender, System.EventArgs e)
    {
        // Close the form when the user clicks the close button.
        this.Close();
    } //labelExit_Click

    private void labelTopLeft_Click(Object sender, System.EventArgs e)
    {
        this.set_Location(new Point(0, 0));
    } //labelTopLeft_Click

    private void labelBottomLeft_Click(Object sender, System.EventArgs e)
    {
        this.set_Location(new Point(0, Screen.get_PrimaryScreen().
            get_WorkingArea().get_Height() - this.get_Height()));
    } //labelBottomLeft_Click

    private void labelTopRight_Click(Object sender, System.EventArgs e)
    {
        this.set_Location(new Point(Screen.get_PrimaryScreen().
            get_WorkingArea().get_Width() - this.get_Width(), 0));
    } //labelTopRight_Click

    private void labelBottomRight_Click(Object sender, System.EventArgs e)
    {
        this.set_Location(new Point(Screen.get_PrimaryScreen().
            get_WorkingArea().get_Width() - this.get_Width(), 
            Screen.get_PrimaryScreen().get_WorkingArea().get_Height() 
            - this.get_Height()));
    } //labelBottomRight_Click

    private void FormMain_Click(Object sender, System.EventArgs e)
    {
        this.set_Location(new Point((Screen.get_PrimaryScreen().
            get_WorkingArea().get_Width() - this.get_Width()) / 2, 
            (Screen.get_PrimaryScreen().get_WorkingArea().get_Height() 
            - this.get_Height()) / 2));
    } //FormMain_Click

    private void FormMain_Load(Object sender, System.EventArgs e)
    {
        // Shape the viewer form with rounded edges.
        DrawForm();
        this.set_Location(new Point((Screen.get_PrimaryScreen().
            get_WorkingArea().get_Width() - this.get_Width()) / 2, 
            (Screen.get_PrimaryScreen().get_WorkingArea().get_Height() 
            - this.get_Height()) / 2));
    } //FormMain_Load

    private void DrawForm()
    {
        // Shape the viewer form with rounded edges.
        GraphicsPath graphicsPath = new GraphicsPath();

        graphicsPath.AddArc(0, 0, 100, 100, 180, 90);
        graphicsPath.AddArc(100, 0, 100, 100, 270, 90);
        graphicsPath.AddArc(100, 100, 100, 100, 0, 90);
        graphicsPath.AddArc(0, 100, 100, 100, 90, 90);

        this.set_Region(new Region(graphicsPath));
    } //DrawForm

    // Define various form elements.
    private System.ComponentModel.Container components = null;
    private System.Windows.Forms.Label labelExit;
    private System.Windows.Forms.Label labelTime;
    private System.Windows.Forms.Timer timerMain;
    private System.Windows.Forms.Button buttonLapReset;
    private System.Windows.Forms.Button buttonStartStop;
    private System.Windows.Forms.Label labelLapPrompt;
    private System.Windows.Forms.Label labelTimePrompt;
    private System.Windows.Forms.Label labelLap;
    private System.Windows.Forms.Label labelBottomLeft;
    private System.Windows.Forms.Label labelBottomRight;
    private System.Windows.Forms.Label labelTopLeft;
    private System.Windows.Forms.Label labelTopRight;

    private void InitializeComponent()
    {
        this.SuspendLayout();

        this.components = new System.ComponentModel.Container();
        this.labelExit = new System.Windows.Forms.Label();
        this.labelTime = new System.Windows.Forms.Label();
        this.buttonLapReset = new System.Windows.Forms.Button();
        this.timerMain = new System.Windows.Forms.Timer(this.components);
        this.labelLap = new System.Windows.Forms.Label();
        this.buttonStartStop = new System.Windows.Forms.Button();
        this.labelLapPrompt = new System.Windows.Forms.Label();
        this.labelTimePrompt = new System.Windows.Forms.Label();
        this.labelBottomLeft = new System.Windows.Forms.Label();
        this.labelBottomRight = new System.Windows.Forms.Label();
        this.labelTopLeft = new System.Windows.Forms.Label();
        this.labelTopRight = new System.Windows.Forms.Label();
        // labelExit
        this.labelExit.set_BorderStyle(
            System.Windows.Forms.BorderStyle.Fixed3D);
        this.labelExit.set_ForeColor(System.Drawing.Color.get_Aqua());
        this.labelExit.set_Location(new System.Drawing.Point(160, 16));
        this.labelExit.set_Name("labelExit");
        this.labelExit.set_Size(new System.Drawing.Size(20, 20));
        this.labelExit.set_TabIndex(0);
        this.labelExit.set_Text("x");
        this.labelExit.set_TextAlign(
            System.Drawing.ContentAlignment.BottomCenter);
        this.labelExit.add_Click(new System.EventHandler(this.labelExit_Click));
        // labelTime
        this.labelTime.set_Font(new System.Drawing.Font("Comic Sans MS", 18, 
            System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point));
        this.labelTime.set_ForeColor(System.Drawing.Color.get_Yellow());
        this.labelTime.set_Location(new System.Drawing.Point(-3, 56));
        this.labelTime.set_Name("labelTime");
        this.labelTime.set_Size(new System.Drawing.Size(208, 32));
        this.labelTime.set_TabIndex(1);
        this.labelTime.set_Text("00:00:00.00");
        // buttonLapReset
        this.buttonLapReset.set_Font(new System.Drawing.Font("Comic Sans MS", 
            14.25f, System.Drawing.FontStyle.Bold, 
            System.Drawing.GraphicsUnit.Point));
        this.buttonLapReset.set_ForeColor(System.Drawing.Color.get_Yellow());
        this.buttonLapReset.set_Location(new System.Drawing.Point(104, 160));
        this.buttonLapReset.set_Name("buttonLapReset");
        this.buttonLapReset.set_Size(new System.Drawing.Size(72, 32));
        this.buttonLapReset.set_TabIndex(4);
        this.buttonLapReset.set_Text("Lap");
        this.buttonLapReset.add_Click(new System.EventHandler(
            this.buttonLapReset_Click));
        // timerMain
        this.timerMain.set_Enabled(true);
        this.timerMain.set_Interval(50);
        this.timerMain.add_Tick(new System.EventHandler(this.timerMain_Tick));
        // labelLap
        this.labelLap.set_Font(new System.Drawing.Font("Comic Sans MS", 
            (float)14.25, System.Drawing.FontStyle.Regular, 
            System.Drawing.GraphicsUnit.Point));
        this.labelLap.set_ForeColor(System.Drawing.Color.get_Yellow());
        this.labelLap.set_Location(new System.Drawing.Point(0, 120));
        this.labelLap.set_Name("labelLap");
        this.labelLap.set_Size(new System.Drawing.Size(200, 32));
        this.labelLap.set_TabIndex(5);
        this.labelLap.set_Visible(false);
        // buttonStartStop
        this.buttonStartStop.set_FlatStyle(System.Windows.Forms.FlatStyle.Flat);
        this.buttonStartStop.set_Font(new System.Drawing.Font("Comic Sans MS",
            (float)14.25, System.Drawing.FontStyle.Bold, 
            System.Drawing.GraphicsUnit.Point));
        this.buttonStartStop.set_ForeColor(System.Drawing.Color.get_Yellow());
        this.buttonStartStop.set_Location(new System.Drawing.Point(24, 160));
        this.buttonStartStop.set_Name("buttonStartStop");
        this.buttonStartStop.set_Size(new System.Drawing.Size(72, 32));
        this.buttonStartStop.set_TabIndex(2);
        this.buttonStartStop.set_Text("Start");
        this.buttonStartStop.add_Click(new System.EventHandler(
            this.buttonStartStop_Click));
        // labelLapPrompt
        this.labelLapPrompt.set_Font(new System.Drawing.Font("Comic Sans MS", 
            (float)14.25, System.Drawing.FontStyle.Regular, 
            System.Drawing.GraphicsUnit.Point));
        this.labelLapPrompt.set_ForeColor(System.Drawing.Color.get_Yellow());
        this.labelLapPrompt.set_Location(new System.Drawing.Point(8, 96));
        this.labelLapPrompt.set_Name("labelLapPrompt");
        this.labelLapPrompt.set_Size(new System.Drawing.Size(56, 24));
        this.labelLapPrompt.set_TabIndex(6);
        this.labelLapPrompt.set_Text("Lap Time");
        this.labelLapPrompt.set_Visible(false);
        // labelTimePrompt
        this.labelTimePrompt.set_Font(new System.Drawing.Font("Comic Sans MS", 
            (float)15.75, System.Drawing.FontStyle.Regular, 
            System.Drawing.GraphicsUnit.Point));
        this.labelTimePrompt.set_ForeColor(System.Drawing.Color.get_Yellow());
        this.labelTimePrompt.set_Location(new System.Drawing.Point(0, 24));
        this.labelTimePrompt.set_Name("labelTimePrompt");
        this.labelTimePrompt.set_Size(new System.Drawing.Size(88, 24));
        this.labelTimePrompt.set_TabIndex(7);
        this.labelTimePrompt.set_Text("Time");
        // labelBottomLeft
        this.labelBottomLeft.set_BackColor(System.Drawing.Color.get_Black());
        this.labelBottomLeft.set_ForeColor(System.Drawing.Color.get_Black());
        this.labelBottomLeft.set_Location(new System.Drawing.Point(0, 176));
        this.labelBottomLeft.set_Name("labelBottomLeft");
        this.labelBottomLeft.set_Size(new System.Drawing.Size(16, 16));
        this.labelBottomLeft.set_TabIndex(8);
        this.labelBottomLeft.add_Click(new System.EventHandler(
            this.labelBottomLeft_Click));
        // labelBottomRight
        this.labelBottomRight.set_BackColor(System.Drawing.Color.get_Black());
        this.labelBottomRight.set_ForeColor(System.Drawing.Color.get_Black());
        this.labelBottomRight.set_Location(new System.Drawing.Point(184, 176));
        this.labelBottomRight.set_Name("labelBottomRight");
        this.labelBottomRight.set_Size(new System.Drawing.Size(16, 16));
        this.labelBottomRight.set_TabIndex(9);
        this.labelBottomRight.add_Click(new System.EventHandler(
            this.labelBottomRight_Click));
        // labelTopLeft
        this.labelTopLeft.set_BackColor(System.Drawing.Color.get_Black());
        this.labelTopLeft.set_ForeColor(System.Drawing.Color.get_Black());
        this.labelTopLeft.set_Location(new System.Drawing.Point(0, 8));
        this.labelTopLeft.set_Name("labelTopLeft");
        this.labelTopLeft.set_Size(new System.Drawing.Size(16, 16));
        this.labelTopLeft.set_TabIndex(10);
        this.labelTopLeft.add_Click(new System.EventHandler(
            this.labelTopLeft_Click));
        // labelTopRight
        this.labelTopRight.set_BackColor(System.Drawing.Color.get_Black());
        this.labelTopRight.set_ForeColor(System.Drawing.Color.get_Black());
        this.labelTopRight.set_Location(new System.Drawing.Point(184, 8));
        this.labelTopRight.set_Name("labelTopRight");
        this.labelTopRight.set_Size(new System.Drawing.Size(16, 16));
        this.labelTopRight.set_TabIndex(11);
        this.labelTopRight.add_Click(new System.EventHandler(
            this.labelTopRight_Click));
        // FormMain
        this.set_AutoScaleBaseSize(new System.Drawing.Size(9, 22));
        this.set_BackColor(System.Drawing.Color.get_Navy());
        this.set_ClientSize(new System.Drawing.Size(200, 200));
        this.get_Controls().Add(this.labelTopRight);
        this.get_Controls().Add(this.labelTopLeft);
        this.get_Controls().Add(this.labelBottomRight);
        this.get_Controls().Add(this.labelBottomLeft);
        this.get_Controls().Add(this.labelTimePrompt);
        this.get_Controls().Add(this.labelLapPrompt);
        this.get_Controls().Add(this.labelLap);
        this.get_Controls().Add(this.buttonLapReset);
        this.get_Controls().Add(this.buttonStartStop);
        this.get_Controls().Add(this.labelTime);
        this.get_Controls().Add(this.labelExit);
        this.set_Font(new System.Drawing.Font("Microsoft Sans Serif", 
            (float)14.25, System.Drawing.FontStyle.Regular, 
            System.Drawing.GraphicsUnit.Point));
        this.set_FormBorderStyle(System.Windows.Forms.FormBorderStyle.None);
        this.set_Name("FormMain");
        this.set_Text("StopWatch Sample");
        this.set_TopMost(true);
        this.add_Load(new System.EventHandler(this.FormMain_Load));

        this.ResumeLayout(false);
    } //InitializeComponent
} //FormMain
Иерархия наследования

System..::.Object
  System.Diagnostics..::.Stopwatch
Потокобезопасность

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.
Платформы

Windows Vista, Windows XP с пакетом обновления 2 (SP2), Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 с пакетом обновления 4 (SP4), Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile для карманных ПК, Xbox 360

Среды .NET Framework и .NET Compact Framework поддерживают не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.
Сведения о версии

.NET Framework

Поддерживается в версиях: 3.5, 3.0, 2.0

.NET Compact Framework

Поддерживается в версии: 3.5

XNA Framework

Поддерживается в версиях: 2.0, 1.0
См. также

Ссылки

Теги :


Page view tracker