Autor Beitrag
reichenberg
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 25.06.10 12:33 
Hallo Liebe C#ler ;)

Da sich das alte Problem nun schnell von allein gelöst hatte, stehe ich nun vor einem neuen Problem. Und zwar habe ich vor eine Stopuhr zu starten falls man den Start/Stop Button drückt, daraufhin soll die laufende Zeit sekundenweise z.b. in einer Textbox angezeigt werden(vllt habt ihr ja bessere Lösungsvorschläge)! Drückt man nochmals auf diesen Button belibt die zeit stehen und kann als Variable gespeichert werden..
Für ein paar neue Anregungen oder Lösungsvorschläge wäre ich sehr erfreut ;))

Mfg
Reichenberg
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 25.06.10 12:57 
user profile iconreichenberg hat folgendes geschrieben Zum zitierten Posting springen:
Für ein paar neue Anregungen oder Lösungsvorschläge wäre ich sehr erfreut ;))

Was für neue Anregungen erwartest du? wo ist das Problem einen Timer zu starten und die Zeit in einem Edit ausgeben zu lassen?
reichenberg
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 25.06.10 13:07 
Ich habe schon einige Codebeispiele ausprobiert aber dabei sind immer fehler aufgetreten.. Einen Timer habe ich bereits der auch funktioniert mit der funktion start stop allerdings kriege ich diese laufende zeit nicht angezeigt :( hättest du da evt. ein codebeispiel?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 25.06.10 13:10 
user profile iconreichenberg hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe schon einige Codebeispiele ausprobiert aber dabei sind immer fehler aufgetreten.

Dann nenne uns doch die Fehler.
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 25.06.10 13:10 
Wenn das Start/Stop funktioniert brauchst du lediglich einen Timer. Den setzt du auf deinen Update-Interval (vlt. 1 Sekunde). In dem Timer-Elapsed Event zeigst du dann den Fortschritt von der StopWatch an.. und fertig. Ggf. benötigst du noch ein Invoke. Aber setzt es erstmal um, dann kann man die bei den weiteren Schritten helfen.

Gruß
reichenberg
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 25.06.10 14:23 
hättest du dazu evt. ein code beispiel?

hier mein bisheriger code der form..
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Reygers.Data;
using System.IO;
using System.Diagnostics;
using System.Threading;

namespace Programm
{
    public partial class bearbeitung : Form
    {
        public bearbeitung()
        {
            InitializeComponent();
        }

        private void btn_save_click(object sender, MouseEventArgs e)
        {
            SaveFileDialog dlgSave = new SaveFileDialog();
            dlgSave.Filter = "Textdateien (*.txt) | *.txt| Alle Dateien (*.*) | *.*";
            string FileName = "";
            if (dlgSave.ShowDialog() == DialogResult.OK)
            {
                FileName = dlgSave.FileName;
            }
            string b = Convert.ToString(dateTimePicker1.Value);
            StreamWriter sw = File.CreateText(FileName);
            sw.WriteLine(b);
            sw.WriteLine(a);
            sw.WriteLine(comboBoxEx1.Text);
            sw.WriteLine(comboBoxEx2.Text);
            sw.WriteLine(comboBoxEx3.Text);
            sw.WriteLine(richTextBox1.Text);
            sw.Flush();
            sw.Close();
            string FileName2 = "test.txt";
            richTextBox1.SaveFile(FileName2, RichTextBoxStreamType.PlainText);
        }

        private void btn_exit_click(object sender, MouseEventArgs e)
        {
            this.Close();
        }

        private void bearbeitung_Load(object sender, EventArgs e)
        {
            
            Database db = new Database("...""account database");
            DataTable personTable = db.Query(" SELECT assistantID, assistantName FROM tbl_assistant WHERE telephoneNO ='...'");
            comboBoxEx1.DataSource = personTable;
            comboBoxEx1.ValueMember = "assistantID";
            comboBoxEx1.DisplayMember = "assistantName";

            Database db2 = new Database("...""account database");
            DataTable customerTable = db.Query(" SELECT customerID, company FROM tbl_customer WHERE telephoneNO <>'...'");
            comboBoxEx2.DataSource = customerTable;
            comboBoxEx2.ValueMember = "customerID";
            comboBoxEx2.DisplayMember = "company";

            Database db3 = new Database("...""account database");
            DataTable contactTable = db.Query(" SELECT assistantID, assistantName FROM tbl_assistant WHERE telephoneNO <>'...'");
            comboBoxEx3.DataSource = contactTable;
            comboBoxEx3.ValueMember = "assistantID";
            comboBoxEx3.DisplayMember = "assistantName";
            
        }

          string a;
          int time;
          DateTime start = DateTime.MinValue;
          DateTime end = DateTime.MinValue;

          private void btn_startstop_click(object sender, System.EventArgs e)
          {
              /*
              Stopwatch stopwatch = new Stopwatch();
              stopwatch.Start();
              if (start == DateTime.MinValue)
                  start = DateTime.Now;
              else
              {
                  end = DateTime.Now;
                  a = Convert.ToString(((DateTime)end - start));
                  textBoxX1.Text = a;  
              }*/


               // When the timer is stopped, this button event starts 
            // the timer.  When the timer is running, this button 
            // event stops the timer.
            
        }


              

              
          }

        }
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 25.06.10 15:02 
Wo ist den da der Timer? und der Teil mit der StopWatch ist ja kommentiert. Den anderen Teil braucht man nicht.

Du machst eine Klassen Timer & StopWatch:
ausblenden C#-Quelltext
1:
2:
       private System.Timers.Timer _timer = new System.Timers.Timer(125);
        private System.Diagnostics.Stopwatch _stopWatch = new System.Diagnostics.Stopwatch();

Bei der Instanziierung legst du fest welche Methode er aufrufen soll:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public bearbeitung()
{
   InitializeComponent();

   _timer.Elapsed += new System.Timers.ElapsedEventHandler(ShowTime);
}


In der Methode zeigst du die vergangene Zeit an (weil das Event von einem anderen Thread geworfen wird ist ein Invoke notwendig):
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
        private void ShowTime(object sender, EventArgs e)
        {
            this.Invoke(new ShowTimeDelegate(ShowTime), _stopWatch.Elapsed);
        }

        private void ShowTime(TimeSpan elapsedTime)
        {
            this.lTime.Text = string.Format("{0:00}:{1:00}:{2:000}",
                elapsedTime.Minutes, elapsedTime.Seconds, elapsedTime.Milliseconds);
        }


Das Delegate sieht dann so aus:
ausblenden C#-Quelltext
1:
private delegate void ShowTimeDelegate(TimeSpan elapsedTime);					


Dann brauchst du nur noch ein Button der das ganze Started und Stopt:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
        private void bToggle_Click(object sender, EventArgs e)
        {
            if (_stopWatch.IsRunning)
            {
                _stopWatch.Stop();
                _timer.Enabled = false;
            }
            else
            {
                _stopWatch.Reset();
                _stopWatch.Start();
                _timer.Enabled = true;
            }
        }


Das wars .... verstanden??

Für diesen Beitrag haben gedankt: Kha
reichenberg
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 25.06.10 15:06 
Dann werde ich mal deine Lösung ausprobieren.

Und vielen dank schonmal für die Lösung danielf.

EDIT:

Zitat:
this.lTime.Text = string.Format("{0:00}:{1:00}:{2:000}",


wo wird denn lTime definiert oder was ist lTime?
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 25.06.10 15:27 
lTimer ist ein Label-Control. Benutze den Designer um es auf deinem Form zu platzieren.
reichenberg
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 25.06.10 15:52 
Irg klappts noch nich... Das Prog startet zwar aber im Lbel wird der Wert nicht angezeigt :(

Erster Teil:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
 
    public partial class bearbeitung : Form
    {  
          private System.Timers.Timer _timer = new System.Timers.Timer(125);
          private System.Diagnostics.Stopwatch _stopWatch = new System.Diagnostics.Stopwatch();

       

        public bearbeitung()
        {
            InitializeComponent();
            _timer.Elapsed += new System.Timers.ElapsedEventHandler(ShowTime);

    }


Zweiter Teil:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
private void btn_startstop_click(object sender, System.EventArgs e)
          {

          }
        private delegate void ShowTimeDelegate(TimeSpan elapsedTime);

         private void ShowTime(object sender, EventArgs e)
        {
            this.Invoke(new ShowTimeDelegate(ShowTime), _stopWatch.Elapsed);
        }       

                private void ShowTime(TimeSpan elapsedTime)
        {
                this.lTime.Text = string.Format("{0:00}:{1:00}:{2:000}",
                elapsedTime.Minutes, elapsedTime.Seconds, elapsedTime.Milliseconds);
        }
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 25.06.10 16:13 
Den Timer solltest du auch starten.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 26.06.10 10:57 
user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
(weil das Event von einem anderen Thread geworfen wird ist ein Invoke notwendig)
Ausführliche Lösung, aber warum denn keinen System.Windows.Forms.Timer?

_________________
>λ=
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Sa 26.06.10 11:46 
Hab ich mir ehrlich gesagt keine speziellen Gedanken darüber gemacht. Hab mir gerade mal die Unterschiede angeschaut und du hast wohl recht.. ist passender :)

Viel Spaß, Reichenberg :)
reichenberg
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 28.06.10 09:53 
Alles klar. Vielen dank für eure Hilfe. Das Programm klappt jetzt soweit.

Mfg
reichenberg