1. Datei >> Neu 2. Beim Beenden Speichern abfragen 3. Autosave

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    Oh, ... okay ... aber ich dachte, weil ich dieses "DateiSpeichern" eben aus anderen Formularelementen heraus aufrufen möchte, müsste es unbedingt eine Funktion sein ...

    Also brauche ich nur dann eine Funktion, wenn ich einen Wert zurück gebe? (das ist der einzige Unterschied zu Sub??)

    PS: Danke übrigens :)

    EDIT: Ich hab es jetzt bei der Funktion belassen und gebe einfach einen Wert zurück, hab ich in die IF-Abfrage gepackt:

    VB.NET-Quellcode

    1. If (SaveFile1.ShowDialog() = System.Windows.Forms.DialogResult.OK) _
    2. And (SaveFile1.FileName.Length > 0) Then
    3. ' Dann speichern
    4. RichTextBox1.SaveFile(SaveFile1.FileName)
    5. Return True
    6. Else
    7. Return False
    8. End If
    ja eigt schon(mir fällt zumindest so nichts anderes ein^^)...
    wenn du es aus einem anderen Formular aus ausrufen willst, ddann musst du Private in Public ändern...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Okay, also das Speichern scheint zu funktionieren *Yayyyy*

    Jetzt möchte ich eine Sicherheitsabfrage ins "Öffnen" einbauen, bzw. der Plan ist:
    Ich klicke auf "Öffnen"
    Wenn die aktuelle Richtextbox NICHT leer ist
    dann erzeuge ich eine neue Instanz
    und gebe dort die zu öffnende Datei aus.

    Tja, einfacher gesagt als getan.
    Ich hab in die "Sub Oeffnen_Click" folgende If-Anweisung eingebaut:

    VB.NET-Quellcode

    1. If Not RichTextBox1.Text = "" Then
    2. Form1.NeueForm2()
    3. End If

    Und dahinter dann den Öffnen-Code gelassen (der ausgetesteter Weise auch bereits funktioniert.

    Tut er auch immer noch, allerdings so:
    Ich bin im Fenster1, es ist leer, ich klicke auf öffnen, die Datei wird ordentlich im Fenster1 geöffnet.
    Ich bin im Fenster1, da steht schon etwas drin, ich klicke auf öffnen, es wird ein leeres Fenster2 erzeugt, aber die Datei wir im Fenster1 geöffnet.

    Wie sage ich ihm oder woher weiß VB in welches Fenster er die zu öffnende Datei schreiben soll?

    lg
    Rumpel

    PS: Ist das okay, wenn ich meine Fragen weiterhin hier rein schreibe? (ich frickel immer mal am einen und mal am anderen Ende des Skripts herum, ich bin da nicht besonders konsequent) oder soll ich jedes mal einen neuen Thread erstellen??

    EDIT: Code korrigiert.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Rumpel“ ()

    Rumpel schrieb:

    Wie sage ich ihm oder woher weiß VB in welches Fenster er die zu öffnende Datei schreiben soll?

    Ich verstehe momentan weder total Dein Problem, noch Deinen geposteten Code:

    Rumpel schrieb:


    If Not RichTextBox1.Text = "" Then
    Main.NeuerSimpleText()
    End If

    Was ist/macht NeuerSimpleText() ???

    Nehmen wir mal an Du hast als (Kinder oder Child) Form die FORM2 und diese hat eine RichtextBox an mit dem Namen RICHTEXTBOX1. Von Deiner HauptForm erzeugst Du eine neues Fenster (also eine neue Instanz von FORM2):

    VB.NET-Quellcode

    1. dim frm2 as FORM2= New FORM2

    Dann hast Du Zugriff auf die neue RichTextbox indem Du den Instanz-Namen mit angibst:

    VB.NET-Quellcode

    1. frm2.RICHTEXTBOX1.Load(...)

    Genausogut kannst Du natürlich eine öffentliche Methode in FORM2 ansprechen mit frm2.meineMethode()
    Entschuldigung, ich hab nicht die Notation aus dem Beispiel von dir auf Seite 1 übernommen ... mein Fehler ... also noch ein Versuch und diesmal in Komplett ...

    VB.NET-Quellcode

    1. IN DER FORM1 (dem Elter [dein Beispiel Kangaroo])
    2. private frm2 as Form2 <-- Form2 ist separat definiert und hat eine RichTextbox
    3. ' so erzeugt man ein neues Kindfenster
    4. Sub NeueForm2()
    5. frm2=new Form2
    6. frm2.show()
    7. End Sub
    8. IN DER FORM2 (dem Kind)
    9. ' Öffnen
    10. Private Sub Oeffnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Oeffnen.Click
    11. If Not RichTextBox1.Text = "" Then
    12. Form1.NeueForm2()
    13. End If
    14. ' Erzeuge OpenFileDialog
    15. Dim OpenFile1 As New OpenFileDialog()
    16. OpenFile1.Filter = "RTF [*.rtf*]|*.rtf|Text [*.txt*]|*.txt|Alle Dateien [*.*]|*.*"
    17. ' Datei aus OpenFileDialog ausgewählt
    18. If (OpenFile1.ShowDialog() = System.Windows.Forms.DialogResult.OK) _
    19. And (OpenFile1.FileName.Length > 0) Then
    20. ' Lade den Inhalt in die RichTextBox1
    21. RichTextBox1.LoadFile(OpenFile1.FileName, _
    22. RichTextBoxStreamType.RichText)
    23. End If
    24. End Sub


    So, Problem dabei ist wie gehabt:
    Ich bin im Fenster1 (erste Instanz von Form2), es ist leer, ich klicke auf öffnen, die Datei wird ordentlich im Fenster1 (erste Instanz von Form2) geöffnet.
    Ich bin im Fenster1 (erste Instanz von Form2), da steht schon etwas drin, ich klicke auf öffnen, es wird ein leeres Fenster2 (zweite Instanz von Form2) erzeugt, aber die Datei wir im Fenster1 (erste Instanz von Form2) geöffnet.

    Wo/wie muss ich dann die Instanz angeben oder woher weiß ich die überhaupt? (Könnte ja auch sein, dass ich mich in der zwölften Instanz befinde, in der schon etwas drin steht und wo ich trotzdem noch eine weitere Datei öffnen möchte) ... oh man ... hoffentlich drücke ich mich klar aus :wacko:

    lg
    Rumpel


    Ich hoffe ich hab alles wieder so benannt wie hier in den Beispielen *läuft rot an*, falls nicht bitte schreien. Und danke, danke, danke für den Hilfeversuch ... ich bin völlig durch den Wind vom vielen Suchen .. scheinbar hat dieses Problem noch niemals jemand im ganzen Internet vor mir gehabt oder ich bin noch grottiger im Suchen, als ich jemals vermutet hätte ;( !!

    Rumpel schrieb:

    ... oh man ... hoffentlich drücke ich mich klar aus :wacko:
    Nein :D

    Rumpel schrieb:

    scheinbar hat dieses Problem noch niemals jemand im ganzen Internet vor mir gehabt
    Doch, vermutlich jeder schon: nur hast Du bisher das mit den Klassen und Instanzen noch nicht begriffen. Da hilft wirklich nur die Grundlagen zumindest mal zu überfliegen, sonst geht nix ...

    Warum Du unbedingt weiter Child-Forms aus den Childs selber aufrufen möchtest ist mir ein Rätsel. Für mich gäbe es nur das Menu in der Hauptform um neue Dateien anzeigen zu lassen.

    Aber gut, ich habe Dein Beispiel mal so abgeändert, dass Du nun in die RTB der neuen Instanz lädst, schliesslich ist die neue Instanz ja noch in der Variable frm2:

    VB.NET-Quellcode

    1. Public Class FORM1
    2. Public frm2 As Form2 '<-- Form2 ist Childform, Zugriff auf Public geändert
    3. ' so erzeugt man ein neues Kindfenster
    4. Sub NeueForm2Erzeugen()
    5. frm2 = New Form2 '<-- hier wird eine neue Instanz erzeugt und der Name frm2 zugewiesen
    6. frm2.Show()
    7. End Sub
    8. End Class
    9. Public Class Form2
    10. ' Öffnen
    11. Private Sub Oeffnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Oeffnen.Click
    12. If Not RichTextBox1.Text = "" Then
    13. Form1.NeueForm2()
    14. End If
    15. ' Erzeuge OpenFileDialog
    16. Dim OpenFile1 As New OpenFileDialog()
    17. OpenFile1.Filter = "RTF [*.rtf*]|*.rtf|Text [*.txt*]|*.txt|Alle Dateien [*.*]|*.*"
    18. ' Datei aus OpenFileDialog ausgewählt
    19. If (OpenFile1.ShowDialog() = System.Windows.Forms.DialogResult.OK) _
    20. And (OpenFile1.FileName.Length > 0) Then
    21. ' Lade den Inhalt in die RichTextBox1 des neuen Fensters
    22. FORM1.frm2.RichTextBox1.LoadFile(OpenFile1.FileName, _
    23. RichTextBoxStreamType.RichText)
    24. End If
    25. End Class
    Danke! Danke, danke, danke, DANKE!
    Ich war schon sooo knapp vor dem endgültigen Aufgeben!
    Du bist Schuld wenn ich weiter frage :P

    Kangaroo schrieb:

    [Doch, vermutlich jeder schon: nur hast Du bisher das mit den Klassen und Instanzen noch nicht begriffen. Da hilft wirklich nur die Grundlagen zumindest mal zu überfliegen, sonst geht nix ...

    Okay, dann würde ich das gerne verstehen, mein Problem ist, dass ich keine Ahnung habe, wo ich anfangen soll ... bzw. komplett ungeduldig bin und immer schon alles zu wissen glaube :whistling:
    Würde es das Grundlagenkapitel hier tun?
    openbook.galileocomputing.de/e…6836023fa5730500a54c1b91c
    Oder was würedst du empfehlen? (seh da nur was von Variablen aber nicht gleich was von Instanzen *grübel*)

    Kangaroo schrieb:

    Warum Du unbedingt weiter Child-Forms aus den Childs selber aufrufen möchtest ist mir ein Rätsel. Für mich gäbe es nur das Menu in der Hauptform um neue Dateien anzeigen zu lassen.

    Na ganz einfach, weil Word das kann :P
    Auf jeden Fall klappt es jetzt und ich bin superduper glücklich :D

    Kangaroo schrieb:

    Aber gut, ich habe Dein Beispiel mal so abgeändert, dass Du nun in die RTB der neuen Instanz lädst, schliesslich ist die neue Instanz ja noch in der Variable frm2

    Hab ich schon Danke gesagt?
    Egal, ich sag's noch mal:
    DANKE!!!

    Rumpel schrieb:

    Oder was würedst du empfehlen?

    Ich würde Dir empfehlen das Galileo-Buch einfach mal bis zu Kap.5 zu überfliegen, wenn Du eh schon PHP gemacht hast sollte das keine grossen Anforderuingen stellen. Aber lies halt da intensiver wo ers Dir ne vorkommt.

    Ab Kap.5 fängt dann alles über Objektorientierte Programmierung an, und das wäre wichtig.

    ... und wenn Du eh schon ein Projekt hast welches Du realisieren möchtest, so geht Lernen und Programmieren ja gut Hand in Hand.