visual studio, click event, inhalt einer textdatei verändern?

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.


DenoProgramiert 
Beitragsersteller
 25.10.2023, 13:09

du bist doch ein gold schatz

0
DenoProgramiert 
Beitragsersteller
 25.10.2023, 13:21

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

0
regex9  25.10.2023, 14:55
@DenoProgramiert

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.

0
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!