Das speichern verstehe ich nicht. Wieso iterierst du über einen Ordner und suchst Dateien die XD heißen? Und willst dann mit dem Pfad zu diesen Dateien RichTextBoxen finden um dann in die Dateien zu schreiben? Wobei du in den TextBoxen Namen scheinbar Pfade auf *.txt Dateien verwaltest. Ohne Erklärung ergibt sich mir kein Sinn.
| Zitat: |
| Ich weiß allgemein nicht, welcher Name sinnvoll ist für beliebig viele RichTextBoxen. Ich habe es einfach mal mit einem Pfad versucht. Für bessere Vorschläge wäre ich dafür. |
Allgemein ist es am besten nicht auf die Namen angewiesen zu sein.
Du hast das z.B. so gebaut das die TabPages und die darauf liegende RichTextBox gleich heißen. Was dir zeigt Namen von Controls müssen nicht eindeutig sein. Irgendwas nach Namen zu finden ist also ein Problem. Man kann nicht nur ein Control (oder kein Control) finden sondern auch theoretisch mehrere. Die Namen sind eigentlich nur ein nettes Goodie für den Winforms Editor damit dort Controls auch einen anzeigbare Namen haben wenn man keine Variablen für die Controls benutzt.
Ein guter Ansatz ist Logik, UI und Daten nie in irgendeiner Form in Abhängigkeit zu bringen wie du es machst. Also Metadaten -> UI -> Metadaten. Schreibe dein Programm so das es theoretisch auch ohne UI auskommt bzw. die UI leicht austauschbar wäre dann stellen sich solche Problem gar nicht wie du sie gerade hast. Ganz praktisch, verwalte die geöffneten Dateien unabhängig von den Controls die du zur Anzeige dafür benutzt. Das kannst du z.B. tun in dem du einfach ein Dictionary benutzt in das du die Pfade reinschreibst und dazu einfach halt das dazugehörende Control (das funktioniert nur solange es natürlich nur ein Control gibt).
Also einfach irgendwo zentral das Dictionary anlegen.
C#-Quelltext
1:
| Dictionary<string, Control> mappings = new Dictionary<string, Control>(); |
Dann wenn du bisher TabPage/RichTextBox erzeugst gibt denen irgendeinen Namen aber eben nichts woran Logik hängt und schreib ein entsprechendes Pfad -> Control mapping ins Dictionary.
C#-Quelltext
1: 2: 3: 4:
| .... t.Controls.Add(r); mappings.Add(y, r); File.WriteAllText(y, r.Text); |
beim speichern dann einfach über das Dictionary iterieren und die Sachen wegschreiben
C#-Quelltext
1: 2:
| foreach (var mapping in mappings) File.WriteAllText(mapping.Key, mapping.Value.Text); |