visual studio, click event, inhalt einer textdatei verändern?
Frage steht oben, ich möchte das sobald ein button gedrückt wurde das der Inhalt einer text datei verändert wird (die Textdatei beinhaltet nur eine Null und soll sich um eins erhöhen und speichern jedes mal wenn der Knopf gedrückt wurde)
2 Antworten
Lies die Datei ein, parse den Text, inkrementiere den Wert und schreibe ihn anschließend zurück in die Datei.
const string path = "path/to/file.txt";
var counter = 0;
if (!File.Exists(path))
{
var content = File.ReadAllText(path);
counter = int.TryParse(content, out var number) ? number + 1 : 0;
}
File.WriteAllText(path, counter.ToString());
Wenn die Datei nicht existiert oder keine Ganzzahl enthält, wäre es vermutlich passend, den Zähler erst einmal auf 0 zu setzen.
Du hast einen Tippfehler: ReadAllText statt ReadlAllText. Zur Fehlermeldung passt das trotzdem nicht. Irgendwo in deinem Code wirst du ein Token (z.B. eine Variable) numberorder verbaut haben, welches nirgendwo definiert wurde.
using System;
using System.Drawing;
using System.Windows.Forms;
public class Form1 : Form {
private Button Button1; //MachWasKnopf :p
private Label Display1;
public Form1() {
this.Size = new Size(600,140);
Display1 = new Label();
Display1.Text = "Der MachWasKnopf wurde noch nicht gedrückt";
Display1.Location = new Point(10, 20);
Display1.AutoSize = true;
this.Controls.Add(Display1);
Button1 = new Button();
Button1.Text = "Mach Was";
Button1.Location = new Point(10, 40);
Button1.Click += new System.EventHandler(Button1_Click);
this.Controls.Add(Button1);
}
private int number=0;
private void Button1_Click(object sender, EventArgs e){
//Alles was bei Click passiernen soll
number++; //um eins erhöhen
System.IO.File.WriteAllText(@"file.txt",number.ToString()); //Nummer in Datei schreiben
Display1.Text = String.Format("Number is {0}.",number);
}
static void Main() {
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
...ist natürlich Schwachsinn die Zählung beginnt bei jedem Programmstart wieder bei 0.
Kontrolle über die Datei hast du indem Du beim Drücken des buttons den wert aus der datei liest und anschließen verarbeitest
private void Button1_Click(object sender, EventArgs e){
//Alles was bei Click passiernen soll
int number;
string text = System.IO.File.ReadAllText(@"file.txt"); //Inhalt der Datei lesen
if (int.TryParse(text, out number)) { //versuchen, diesen in eine Nummer zu konvertieren
number++; //um eins erhöhen
System.IO.File.WriteAllText(@"file.txt",number.ToString()); //zurückschreiben
Display1.Text = String.Format("Number is {0}.",number);
}
else Display1.Text = "No Number in file";
}
der Übersichtlichkeit halber verzichte ich auf eine Fehlerbehandlung, falls die Datei nicht existiert!
bei mir hängt er bei der If beim var content = File.ReadlAllText(path);
errorcode CS0103: Der Name "numberorder" ist im aktuellen Kontext nicht vorhanden