# Zähler mit einem Label in WindowsForms



## hedo161270 (16. April 2020)

Hallo
wer hätte einen Lösungsvorschlag. Möchte einen Zähler generieren, der fortlaufend bei jedem Programmstart hochzählt. Beim beenden soll dieser nicht zurückgesetzt werden, sondern gespeichert werden und beim nächsten Programmstart wieder beim gespeicherten Wert weiter zählen.
Bin dabei ein Ticketsystem zu programmieren und dieses soll eine Ticketnummer generieren die fortlaufend sein soll.
Danke schon mal für eure Hilfe.


----------



## ComFreek (16. April 2020)

Woran scheitert es? Du hast doch alles Benötigte schon geschrieben.



hedo161270 hat gesagt.:


> Bin dabei ein Ticketsystem zu programmieren und dieses soll eine Ticketnummer generieren die fortlaufend sein soll.


Idealerweise wird die Ticketnummer erst nach dem Generieren vergeben, etwa durch ein SQL INSERT INTO-Statement mit einer AUTO_INCREMENT id-Spalte.


----------



## hedo161270 (16. April 2020)

Erstmal Danke für deine Antwort. Geht hier nicht um eine Datenbank, soll nur in der Windows Forms hochgezählt werden. Habe da ein Label erstellt, welches bei jedem Programmstart fortlaufend hochgezählt werden soll und beim Programm schließen gespeichert werden soll. Beim nächsten Programmstart bei der letzten gespeicherten Zahl weiter zählen.

Hier mal mein Code:
public partial class Form1 : Form
{
        //int x;
        public int Y { get; private set; }

public Form1()
{
InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
{
string y = Convert.ToString(Properties.Settings.Default.x);
this.lbl_TicketNummer.Text = y;
        }
        private void Btn_Ticketnummer_Click(object sender, EventArgs e)
        {
            Y += 1;
lbl_TicketNummer.Text = Convert.ToString(Y);
        }
        private void Btn_Speichern_Click(object sender, EventArgs e)
{
int y = Convert.ToInt32(this.lbl_TicketNummer.Text);
Properties.Settings.Default.x = y;
Properties.Settings.Default.Save();
        }
        private void button1_Click(object sender, EventArgs e)
{
//x += 1;
            //lbl_TicketNummer.Text = Convert.ToString(x);
        }
    }

Es passiert folgendes, ich zähle über den Button Ticketnummer immer um eins hoch und dann mit speicher schreibe ich es in die Settings. Jedoch beim erneuten Start steht zwar die letzte Zahl im Label, jedoch wenn ich den Button Ticketnummer klicke beginnt es wieder bei 1.


----------



## ComFreek (16. April 2020)

Code bitte formatieren, siehe meine Signatur. Davor lese ich ihn nicht


----------



## hedo161270 (17. April 2020)

Hallo,
habe mal den Code gezippt als Notepad++ Dokument und das Programm selbst mit angehängt.
Sorry wegen der Formatierung.

Gruß
Dominik


----------



## Spyke (17. April 2020)

hedo161270 Dateianhänge sind auch blöd man weiß nie ob irgendein Fieser irgend ne gefährlische Datei anheftet ;-)
Vorallem da ich zum Beispiel meist von Arbeit aus
(hab kein bock auf Homeoffice aber bin eh der einzige im Büro derzeit ^^)
hier reinschau darf i scho garnicht unbekannte Dateien öffnen.

Was ComFreek meitne Nutze einfach die Formatierungsmöglichkeiten des Forums.

```
public partial class Form1 : Form
{
//int x;
public int Y { get; private set; }

public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string y = Convert.ToString(Properties.Settings.Default.x);
this.lbl_TicketNummer.Text = y;
}
private void Btn_Ticketnummer_Click(object sender, EventArgs e)
{
Y += 1;
lbl_TicketNummer.Text = Convert.ToString(Y);
}
private void Btn_Speichern_Click(object sender, EventArgs e)
{
int y = Convert.ToInt32(this.lbl_TicketNummer.Text);
Properties.Settings.Default.x = y;
Properties.Settings.Default.Save();
}
private void button1_Click(object sender, EventArgs e)
{
//x += 1;
//lbl_TicketNummer.Text = Convert.ToString(x);
}
}
```

Und zu deiner Frage ComFreek hat recht du musst den Zähler speichern.
Und deine ganzen Tickets musst du ja auch in einer Datenbank abspeichern.
Dieser Tickets müssen ja auch eine eindeutige zuweisbare id haben.
Da ist der Ansatz von ComFreek schon richtig.

Sprich du dürfstest eigentlich garnicht selbst hochzählen
deine Id müsste eigentlich in der DB ein Primary Key mit Auto-Increment sein in Verbindung mit den zugehörigen Ticketinfos für diese Id.


Ansosnten könnteste zur Not deinen Zähler beim schließend er Anwendung in eine Datei speichern und beim start wieder auslesen.
Aber solltest du wirklich nur machen wenn es sich um ein Spiel-/Lernprogramm handelt was du gerade machst.


----------

