Autor |
Beitrag |
NoLe_Kazuik
      
Beiträge: 17
Erhaltene Danke: 2
Windows 7
VisualStudio 2010
|
Verfasst: Do 10.11.11 01:25
Hallo,
also wie der Titel des Threads schon andeutet, stelle ich mich ein wenig schwer an mit dem speichern mittels SaveFileDialog und dem öffnen der Datei mittels OpenFileDialog.
In dem Programm brauch ich erstmal das Speichern der RichTextBox des aktuellen Tabs und das Öffnen einer Datei in einen neuen Tab.
Ich bin mir durchaus bewusst, dass sicherlich schon einige Threads zu diesem Thema bestehen, aber wenn ich unseren geliebten Onkel "Google" befrage, finde ich immer nie das passende. Zudem werden wahrscheinlich weitere Fragen folgen, daher habe ich auch diesen Thread eröffnet.
Ich hoffe mir kann da jemand weiterhelfen.
|
|
mats74
      
Beiträge: 189
Erhaltene Danke: 26
Win 10
VS 2017/19, C++, C#
|
Verfasst: Do 10.11.11 08:21
Hallo
NoLe_Kazuik hat folgendes geschrieben : |
In dem Programm brauch ich erstmal das Speichern der RichTextBox des aktuellen Tabs und das Öffnen einer Datei in einen neuen Tab.
|
Also ohne konkrete Frage kann man auch keine konkrete Antwort geben.
Es ist also sehr schwierig Dir "irgend ein Problem" zu lösen  .
Mit ein Bisschen Code oder weiteren Infos wäre uns doch schon geholfen.
_________________ Gruss
mats74
Für diesen Beitrag haben gedankt: NoLe_Kazuik
|
|
storestore
      
Beiträge: 397
Erhaltene Danke: 7
WIN 7
C#
|
Verfasst: Do 10.11.11 09:41
Hi,
Zu einen savefille und openfile Dialog gehört auch immer ein streamwritter und streamreader! Gib mal bei Youtube "c# savefiledialog" ein. Im Video wird es meistens mit einer normalen textbox gemacht, aber du kann auch eine richtextbox nehmen. Viel gluck 
_________________ Der Pc ist nur so schlau, wie derjenige der in steuert!
"Don't Quit. Suffer now, and live the rest of your life as a champion"
Für diesen Beitrag haben gedankt: NoLe_Kazuik
|
|
NoLe_Kazuik 
      
Beiträge: 17
Erhaltene Danke: 2
Windows 7
VisualStudio 2010
|
Verfasst: Do 10.11.11 11:35
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Do 10.11.11 13:34
Hallo,
du könntest dir mal das Tutorial Alles über Dateien durchlesen, da findest du die verschiedenen Möglichkeiten zum Lesen und Speichern einer (Text-)Datei.
Edit: hatte aus Versehen die "erhaltene Danke: 2" als "Beiträge" interpretiert.
Zuletzt bearbeitet von Th69 am Fr 11.11.11 13:44, insgesamt 1-mal bearbeitet
Für diesen Beitrag haben gedankt: NoLe_Kazuik
|
|
mats74
      
Beiträge: 189
Erhaltene Danke: 26
Win 10
VS 2017/19, C++, C#
|
Verfasst: Do 10.11.11 14:31
... da ist tip top beschrieben, wie man Dateien erstellen kann (insbesondere XML).
Ich gebe da noch eine kleiner Beispielcode dazu (nur als Grundlage und Denkanstoss gedacht):
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| String s_dateiname = "C:\\Temp\\Test.txt"; FileStream fs_datei = null; StreamWriter sw_datei = null; String s_dateiinhalt = "Hallo allerseits"; StringBuilder sb = new StringBuilder(); sb.Append(s_dateiinhalt); try { fs_datei = new FileStream(s_dateiname, FileMode.Create); sw_datei = new StreamWriter(fs_datei);
sw_datei.WriteLine("{0}", sb); } catch (Exception ew) { Console.WriteLine("Exception: " + Convert.ToString(ew.Message)); } finally { if (sw_datei != null) sw_datei.Close(); } |
Vielleicht hilft es Dir bei deiner Arbeit.
Damit kannst Du eigentlich irgendwelche Dateien inklusiv Inhalt erzeugen.
Da gibt es natürlich noch andere Möglichkeiten, wie schon im vorherigen Link erwähnt.
_________________ Gruss
mats74
|
|
NoLe_Kazuik 
      
Beiträge: 17
Erhaltene Danke: 2
Windows 7
VisualStudio 2010
|
Verfasst: Fr 11.11.11 00:10
|
|
NoLe_Kazuik 
      
Beiträge: 17
Erhaltene Danke: 2
Windows 7
VisualStudio 2010
|
Verfasst: Fr 11.11.11 01:30
Hallo, das Speichern und Laden des ersten Tabs klappt jetzt soweit ganz gut.
Hab jetzt aber ein Problem, da ich ja z.B. gleichzeitig mehrere Tabs geöffnet haben will und beim öffnen im neuen Tab die Datei geöffnet werden soll.
Sieht im groben so aus:
Methode für das hinzufügen von Tabs inkl. RTB:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| private void addChapter() { int TabNumber = MainTC.SelectedIndex; TabNumber = MainTC.TabCount + 1; TabPage tabnew = new System.Windows.Forms.TabPage(); tabnew.Text = "Neues Kapitel " + TabNumber; RichTextBox MainRTB = new System.Windows.Forms.RichTextBox(); MainRTB.Name = "MainRTB"; MainRTB.Multiline = true; MainRTB.AcceptsTab = true; MainRTB.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; MainRTB.WordWrap = false; MainTC.Controls.Add(tabnew); tabnew.Controls.Add(MainRTB); MainRTB.Dock = DockStyle.Fill; } |
Methode für das Öffnen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| private void tsbOpen_Click(object sender, EventArgs e) { OpenFileDialog open = new OpenFileDialog(); open.FilterIndex = 1; open.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments); open.Multiselect = false; open.RestoreDirectory = true; if (DialogResult.OK == open.ShowDialog()) { fopen(open.FileName); } }
public void fopen(String filename) { if (filename != "") { System.IO.StreamReader read = new System.IO.StreamReader(filename); if (MainTC.SelectedIndex == 0 && MainRTB.Text == "") { while (!read.EndOfStream) { MainRTB.Text += read.ReadLine(); } } else { addChapter(); MainTC.SelectedIndex += 1; MainTC.SelectedTab.Focus(); while (!read.EndOfStream) { this.MainRTB.Text += read.ReadLine(); } } } } |
Das Problem ist jetzt, dass ich zwar einen neuen Tab öffne, der Text aber weiterhin im 1. Tab geschrieben wird.
Der Focus wird auch auf den neuen Tab gesetzt.
Hoffe mir kann hier nocheinmal geholfen werden.
Mit freundlich-nächtlichen Grüßen
EDIT: Hoffentlich werd ich noch übers Wochenende ne Antwort bekommen, jetzt wo "The Elder Scrolls V - Skyrim" über Steam freigeschaltet ist.
|
|
mats74
      
Beiträge: 189
Erhaltene Danke: 26
Win 10
VS 2017/19, C++, C#
|
Verfasst: Fr 11.11.11 09:29
Hallo NoLe
NoLe_Kazuik hat folgendes geschrieben : | while (!read.EndOfStream)
{
this.MainRTB.Text += read.ReadLine();
}
|
Das Problem liegt im this-Zeiger, der die falsche TabPage ankickt.
Du musst die neu erzeugte TabPage mit der richtigen RichTextBox beschreiben.
Ich habe bei mir folgendes ausprobiert:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| while (!read.EndOfStream) { foreach (TabPage t in tabControl1.TabPages) { if (t.Name.ToString() == "") { foreach (Control c in t.Controls) { if (c.Name.ToString() == "MainRTB") { c.Text += read.ReadLine(); } } } } } |
... und hat bei mir dann auch funktioniert.
Das muss jetzt nur noch auf deine Wünsche modifiziert werden.
Da gibts sicherlich auch noch weitere Lösungen zur richtigen RichTextBox zu gelangen.
_________________ Gruss
mats74
Für diesen Beitrag haben gedankt: NoLe_Kazuik
|
|
NoLe_Kazuik 
      
Beiträge: 17
Erhaltene Danke: 2
Windows 7
VisualStudio 2010
|
Verfasst: Fr 11.11.11 21:42
Hey mats74,
dein Tipp hier
mats74 hat folgendes geschrieben : |
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| while (!read.EndOfStream) { foreach (TabPage t in tabControl1.TabPages) { if (t.Name.ToString() == "") { foreach (Control c in t.Controls) { if (c.Name.ToString() == "MainRTB") { c.Text += read.ReadLine(); } } } } } |
|
hat super funktioniert. Danke sehr. Ich denke, dass ich nachher bzw morgen noch einmal ne Frage bezüglich des Speicherns habe.
|
|