Evaluar y enviar comentarios

  Encender vista de ancho de banda bajo
Esta página es específica de
Microsoft Visual Studio 2008/.NET Framework 3.5

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
Stopwatch (Clase)

Actualización: noviembre 2007

Proporciona un conjunto de métodos y propiedades que se puede utilizar para medir el tiempo transcurrido con precisión.

Espacio de nombres:  System.Diagnostics
Ensamblado:  System (en System.dll)
Visual Basic (Declaración)
Public Class Stopwatch
Visual Basic (Uso)
Dim instance As Stopwatch
C#
public class Stopwatch
Visual C++
public ref class Stopwatch
J#
public class Stopwatch
JScript
public class Stopwatch

Una instancia de Stopwatch puede medir el tiempo transcurrido para un intervalo o el total de tiempo transcurrido entre varios intervalos. En un escenario de Stopwatch habitual, se llama al método Start, en otro momento se llama al método Stop y, por último, se comprueba el tiempo transcurrido mediante la propiedad Elapsed.

Una instancia de Stopwatch se está ejecutando o está detenida; utilice IsRunning para determinar el estado actual de Stopwatch. Utilice Start para empezar a medir el tiempo transcurrido; utilice Stop para detener la medida del tiempo transcurrido. Consulte el valor de tiempo transcurrido a través de las propiedades Elapsed, ElapsedMilliseconds o ElapsedTicks. Puede consultar las propiedades de tiempo transcurrido mientras la instancia se está ejecutando o mientras está detenida. Las propiedades de tiempo transcurrido aumentan continuamente mientras se ejecuta Stopwatch; permanecen constantes cuando la instancia está detenida.

De manera predeterminada, el valor de tiempo transcurrido de una instancia de Stopwatch es igual al total de todos los intervalos de tiempo medidos. Cada llamada a Start inicia la cuenta del tiempo transcurrido acumulado; cada llamada a Stop finaliza la medición del intervalo actual y bloquea el valor de tiempo transcurrido acumulado. Utilice el método Reset para borrar el tiempo transcurrido acumulado en una instancia de Stopwatch existente.

Stopwatch mide el tiempo transcurrido contando pasos del temporizador en el mecanismo de temporización subyacente. Si el hardware instalado y el sistema operativo admiten un contador de rendimiento de alta resolución, la clase Stopwatch utiliza ese contador para medir el tiempo transcurrido. De lo contrario, la clase Stopwatch utiliza el temporizador del sistema para medir el tiempo transcurrido. Utilice los campos Frequency y IsHighResolution para determinar la precisión y la resolución de la implementación de control de tiempo de Stopwatch.

La clase Stopwatch ayuda en la manipulación de contadores de rendimiento relacionados con el control de tiempo dentro del código administrado. Específicamente, el campo Frequency y el método GetTimestamp pueden utilizarse en lugar de QueryPerformanceFrequency y QueryPerformanceCounter de las API Win32 no administradas.

ebf7z0sw.alert_note(es-es,VS.90).gifNota:

En un equipo con varios procesadores, no importa en qué procesador se ejecuta el subproceso. Sin embargo, debido a errores del BIOS o de la Capa de abstracción de hardware (HAL), se pueden obtener diferentes resultados de control de tiempo en diferentes procesadores. Para especificar la afinidad del procesador para un subproceso, utilice el método ProcessThread..::.ProcessorAffinity.

En el ejemplo siguiente se muestra un uso simple de la clase Stopwatch para determinar el tiempo de ejecución de una aplicación.

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");
    }
}

En el ejemplo siguiente se utiliza la clase Stopwatch para implementar las operaciones de cronómetro en una aplicación de 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
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0

.NET Compact Framework

Compatible con: 3.5

XNA Framework

Compatible con: 2.0, 1.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2009 Microsoft Corporation. Reservados todos los derechos. Términos de uso  |  Marcas Registradas  |  Privacidad
Page view tracker