none
Textdatei öffnen/speichern und in Textboxen übernehmen RRS feed

  • Frage

  • Hallo,

    ich habe zur Zeit eine Windows Forms Anwendung, welche mir hydraulische Pressdrücke berechnet. Dafür habe ich in meiner Berechnung einen Zylinderdurchmesser und eine max. Tonnage, welche in einer Textdatei gespeichert ist.

    Mittlerweile habe ich das Program so erweitert, dass ich diese Textdatei mittels eines Tool Strip Menüs, welches "Datei öffnen" und "Datei speichern" enthält, öffnen und speichern soll.

    Vorher wurde dies automatisch beim starten der Anwendung vollzogen, mit einem festen Pfad mittels einem String ReadAllLines.

    Jetzt ist für mich die Herausforderung, dass ich keinen Pfad mehr angeben brauche, da ich den OpenFileDialog verwenden will. Aber leider funktioniert mein Programm dadurch überhaupt nichtmehr. Die Textdatei wird nichtmehr richtig ausgelesen.

    Wie kann ich diese Problem am besten lösen eurer Meinung nach?

    Vor der Veränderung:

     public Form1()
            {
                InitializeComponent();
    
                
            }
    
            OpenFileDialog openFile = new OpenFileDialog();
            SaveFileDialog saveFile = new SaveFileDialog();
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
                
                //laden der Stempelparameter aus einer Textdatei
                string[] readLines = File.ReadAllLines(@"C:\\MP\Maschinenparameter.txt", Encoding.Default);
                stempeldm1.Text = readLines[0];
                max_t.Text = readLines[1];
                lp_x.Text = "100";
                lp_y.Text = "100";
                druck_lp.Text = "100";
    
            }
    
    string[] readLines = File.ReadAllLines(@"C:\\MP\Maschinenparameter.txt", Encoding.Default);
                    stempeldm1.Text = readLines[0];
                    max_t.Text = readLines[1];
    Nachdem ich den Tool Strip Menu eingefügt hatte und schon bearbeitet.

     public Form1()
            {
                InitializeComponent();
    
                
            }
    
            OpenFileDialog openFile = new OpenFileDialog();
            SaveFileDialog saveFile = new SaveFileDialog();
    
    private void DateiÖffnenToolStripMenuItem_Click(object sender, EventArgs e)
            {
                
                if (openFile.ShowDialog() == DialogResult.OK)
                {
                    string[] readLines = File.ReadAllLines(@"C:\\MP\Maschinenparameter.txt", Encoding.Default);
                    stempeldm1.Text = readLines[0];
                    max_t.Text = readLines[1];
    
                }
            }


    Montag, 19. August 2019 14:09

Antworten

  • Wenn du den Filedialog nutzt, musst du natürlich auch die gewählte Datei öffnen/lesen:

                var result = this.openFile.ShowDialog();
    
                if (result == DialogResult.OK)
                {
                    var fileName = this.openFile.FileName;
                    var readLines = File.ReadAllLines(fileName, Encoding.Default);
                    ...
                }
    Wenn ich dich richtig verstehe, ändern sich die Daten möglicherweise während der programmlaufzeit und werden dann beim Verlassen des Programms wieder geschrieben. In diesem Falle empfielt es sich, sich den Dateinamen in einer globalen Variable zu merken, sodaß du später auch noch drauf Zugriff hast; der benutzer soll ja vermutlich bei Verlassen des Programms nicht nochmals die Datei wählen (können).

    • Als Antwort markiert Isosek Dienstag, 20. August 2019 07:01
    Dienstag, 20. August 2019 05:49

Alle Antworten

  • Wenn du den Filedialog nutzt, musst du natürlich auch die gewählte Datei öffnen/lesen:

                var result = this.openFile.ShowDialog();
    
                if (result == DialogResult.OK)
                {
                    var fileName = this.openFile.FileName;
                    var readLines = File.ReadAllLines(fileName, Encoding.Default);
                    ...
                }
    Wenn ich dich richtig verstehe, ändern sich die Daten möglicherweise während der programmlaufzeit und werden dann beim Verlassen des Programms wieder geschrieben. In diesem Falle empfielt es sich, sich den Dateinamen in einer globalen Variable zu merken, sodaß du später auch noch drauf Zugriff hast; der benutzer soll ja vermutlich bei Verlassen des Programms nicht nochmals die Datei wählen (können).

    • Als Antwort markiert Isosek Dienstag, 20. August 2019 07:01
    Dienstag, 20. August 2019 05:49
  • Vielen Dank. Funktioniert jetzt.

    Erstaunt mich immer wieder, dass es nur wenige Zeilen zur Lösung sind.

    Dienstag, 20. August 2019 07:02