Inhalt einer RichTextBox aus ausgewähltem Tab speichern

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Inhalt einer RichTextBox aus ausgewähltem Tab speichern

    Hallo :)
    Also ich erstelle mir gerade einen kleinen Texteditor. Ich dachte mir, dass es schön wäre, wenn man zwischen Tabs switchen könnte.
    Ich habe auch schon eine Möglichkeit gefunden Tabs hinzuzufügen. (ich muss zugeben, dass ich sie im Internet gefunden habe, allerdings verstehe ich den Code und habe nicht blind kopiert)

    VB.NET-Quellcode

    1. Dim editor As New RichTextBox
    2. Dim Tab As New TabPage
    3. TabControl1.Controls.Add(Tab)
    4. Tab.Controls.Add(editor)
    5. Tab.Text = "Test Page"
    6. editor.Anchor = AnchorStyles.Right
    7. editor.Anchor += AnchorStyles.Left
    8. editor.Anchor += AnchorStyles.Top
    9. editor.Anchor += AnchorStyles.Bottom
    10. editor.Height = TabControl1.Height - 26
    11. editor.Width = TabControl1.Width - 8
    12. editor.Text = "Test"


    Das funktioniert soweit auch recht gut. Aber jetzt möchte ich natürlich auch, dass man den Text speichern kann. Es soll halt der Text aus dem derzeit aktiven Tab gespeichert werden.

    VB.NET-Quellcode

    1. Dim speichern As New System.IO.StreamWriter("C:\Users\" + Environment.UserName + "\Desktop\" + TextBox1.Text + "." + Combobox1.Text)
    2. speichern.Write(->Was kommt hier rein :(?)
    3. speichern.Close()
    4. Me.Hide()
    5. Form1.Show()
    6. MsgBox("Das Veröffentlichen war erfolgreich. Die Datei wurde auf dem Desktop gespeichert.")


    Nur was kommt jetzt bei speichern.Write in die Klammern? :/
    Danke für eure Hilfe schon einmal. :)

    Ich hoffe ich bin im richtigen Unterforum - wenn nicht tuts mir leid.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „FlopsBert“ ()

    @Artentus
    Danke erstmal für die schnelle Antwort. Ich muss leider gestehen das ich zwar schon ein bisschen mit VB rumexperimentiert habe, aber doch noch ein Anfänger bin. ^^ Hast du vielleicht einen Link-Tipp oder ne anfängerfreundliche Lösung ? :D
    Hier hast du ein kleines Beispiel:

    VB.NET-Quellcode

    1. Public Class ExtendedTabPage : Inherits TabPage 'von TabPage erben
    2. Private rtb As RichTextBox
    3. Public Property TextBoxText() As String
    4. Get
    5. Return rtb.Text 'hier wird der Textinhalt zurückgegeben
    6. End Get
    7. Set(value As String)
    8. rtb.Text = value 'hier wird der Textinhelt festgelegt
    9. End Set
    10. End Property
    11. Sub New()
    12. rtb = New RichTextBox
    13. rtb.Anchor = AnchorStyles.Right Or AnchorStyles.Left Or AnchorStyles.Top Or AnchorStyles.Bottom
    14. rtb.Height = TabControl1.Height - 26
    15. rtb.Width = TabControl1.Width - 8
    16. Controls.Add(rtb) 'RichTextBox dem Tab hinzufügen
    17. End Sub
    18. End Class

    Der Code fürs Hinzufügen sieht dann so aus:

    VB.NET-Quellcode

    1. Dim tab As New ExtendedTabPage 'Instanz der neuen Klasse erstellen
    2. TabControl1.TabPages.Add(tab) 'TabPage hinzufügen
    3. tab.Text = "Test Page"
    4. tab.TextBoxText = "Test"

    Und in das Write kommt dann schließlich das rein:

    VB.NET-Quellcode

    1. DirectCast(TabControl1.SelectedTab, ExtendedTabPage).TextBoxText 'TabPage in ExtendedTabPage konvertieren und TextBoxText abrufen
    Was soll der Ranz?
    Warum erstellst Du die RichTextBox nicht im Designer?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du generierst einen vorgefertigten Tab oder ein UserControl mit RTB.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!