Stopwatch C#

werner_sg

Erfahrenes Mitglied
Hallo

habe folgenden Stopwatch Code eingebunden

Code:
public partial class Start : Form
    {
        private Stopwatch stopWatch;

        public Start()
        {
            InitializeComponent();

            //Pausenzeit
            stopWatch = new Stopwatch();

----------------------------------------------------------------------------

      private void pictureBox_Pause_Click(object sender, EventArgs e)
        {

            stopWatch.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {


            this.label_Pause.Text = stopWatch.Elapsed.ToString();
            
        }

wenn ich jetzt auf die Picturbox klicke erhalte ich im Label HH:mm:ss:fffffff es sollen aber eigentlich nur Stunde und Minute angezeigt werden.

Versuche ich zu Formatieren ToString("HH:mm") erhalte ich einen Fehler dass das Format falsch ist.
mit string.Format("{...... geht es auch nicht

Ein weiteres Fragezeichen für mich ist ToogleSwitch sehe da bei einer Picturebox nicht richtig durch (für Buttons ist das ja überall leicht erklärt), ich würde gerne nur eine Grafik nutzen und das dann je nach Status der Stopwatch eine andere Grafik angezeigt wird.

Schon mal Danke für eure Unterstützung
 
Zuletzt bearbeitet:

werner_sg

Erfahrenes Mitglied
TimeSpan.ToString Methode (System)
kleines h und eventuell die doppel Punkte escapen

ToogleSwitch sagt mir jetzt nixs.
Aber setzt einfach bei der PictureBox das Image neu je nach Status.
Hi Spyke

kleines oder großes H macht keinen Unterschied aber das escapen hat geholfen :love:

Wo setze ich den bei der Picturebox ein zweites Bild rein? beziehungsweise wie funktioniert das mit dem Status, sie funktioniert ja im Standard nur wie ein Taster
 

Spyke

Premium-User
du musst ja irgendwo die einen Status halten und einfach je nach Status entsprechend.
WEnn du sagst taster dann hast du eventuell das Click Ereignis der PictureBox abonniert

Ungefähr so (ungetestet)
C#:
bool isClicked = false;

private void meinePictureBox_Click(object sender, EventArgs e)
{
    isClicked = !isClicked; //wir negieren einfach den Status ob geklickt wurde bei jedem Klick (sprich aus true wird false oder aus false wird true)
   
    if (isClicked)
        meinePictureBox.Image = meinGeklickedBild;
    else
        meinePictureBox.Image = meinNichtGeklickedBild;
}
 

werner_sg

Erfahrenes Mitglied
du musst ja irgendwo die einen Status halten und einfach je nach Status entsprechend.
WEnn du sagst taster dann hast du eventuell das Click Ereignis der PictureBox abonniert

Ungefähr so (ungetestet)
C#:
bool isClicked = false;

private void meinePictureBox_Click(object sender, EventArgs e)
{
    isClicked = !isClicked; //wir negieren einfach den Status ob geklickt wurde bei jedem Klick (sprich aus true wird false oder aus false wird true)
  
    if (isClicked)
        meinePictureBox.Image = meinGeklickedBild;
    else
        meinePictureBox.Image = meinNichtGeklickedBild;
}
Danke teste ich nachher mal durch.

Eventuell kannst du mir auch die nächste Frage beantworten

ich möchte das label_Pause von dem Ergebnis label.Summe abziehen, erhalte bei meinen Versuchen aber immer wieder fehler Meldungen

Code:
       private void Tick2(object sender, EventArgs e)
        {
            var sz = TimeSpan.Parse(label_Startzeit.Text);
            var iz = DateTime.Parse(label_Zeit.Text);
//mein Gedanke
// var pz = label_Pause.text;

            var az = iz - sz;     //  und hier dann:  var az = iz - sz- pz; ( gibt aber einen Fehler)
            label_Summe.Text = az.ToString("HH:mm");

        }
 

werner_sg

Erfahrenes Mitglied
Habs raus

C#:
 // Arbeitszeit Berechnung
        private void Tick2(object sender, EventArgs e)
        {
            var sz = TimeSpan.Parse(label_Startzeit.Text);
            var iz = DateTime.Parse(label_Zeit.Text);
            var pz = DateTime.Parse(label_Pause.Text);

            var az = iz - sz;

            var kz = az - pz;
          
            label_Summe.Text = kz.ToString("hh\\:mm");


        }

so funktioniert es, er brauchte die gleiche Formatierung wie das Pausen Label