TabControl: nach Erstellung von neuer TabPage diese anzeigen.

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von HerrBert.

    TabControl: nach Erstellung von neuer TabPage diese anzeigen.

    Hallo,

    wie man in meiner Sig sehen kann,
    bin ich grade einen Editor, speziell für Web-Auftritte am programmieren.

    Im Momment sitze ich an den Tabs, was sich nicht so ganz einfach gestaltet.

    Problem:
    Ich möchte, nachdem ich durch das öffnen einer Datei bzw. einer neuen Datei auf die letzte TabPage (also auf das erstellte Element) zugreifen.
    Dazu habe ich mir folgendes überlegt:

    VB.NET-Quellcode

    1. Dim ofd As New OpenFileDialog
    2. ofd.Filter = "HTML-Dateien|*.html|HTM-Dateien|*.htm|PHP-Dateien|*.php|CSS-Dateien|*.css|JavaScript-Dateien|*.js|VBScript-Dateien|*.vbs"
    3. ofd.Title = "Datei auswählen..."
    4. ofd.FilterIndex = 3
    5. ofd.FileName = ""
    6. ofd.ShowDialog()
    7. Dim code As String = 0 ' was in den editor eingefügt werden soll, wird unten eingefügt.
    8. Try
    9. code = My.Computer.FileSystem.ReadAllText(ofd.FileName) '..sollte abbrechen gedrückt werden, wird keine neue datei erstellt, sonst neuer tab + inhalt
    10. Catch ex As Exception
    11. Exit Sub
    12. End Try
    13. Dim tcn As String = ofd.SafeFileName ' = der eigentliche Dateiname, der als name auf der TabPage erscheinen soll
    14. AddOpenTab(TabControl1, code, tcn) ' siehe definition
    15. Dim el As Integer = TabControl1.SelectedIndex = TabControl1.TabPages.Count ' = letzte tabpage
    16. Dim editor As CodeEditorControl = TabControl1.TabPages.Item(el).Controls.Item(0) ' um dem Editor seine Sprache zuzuweisen
    17. CodeEditorSyntaxLoader.SetSyntax(editor, SyntaxLanguage.HTML) ' genau so, soll nur dynamischer sein, werde noch ne erkennung d. sprache einbauen
    18. TabControl1.SelectTab(el) ' auf letzten tab wechseln


    definition von AddOpenTab

    VB.NET-Quellcode

    1. Dim editor As New CodeEditorControl
    2. Dim Tab As New TabPage
    3. editor.Tag = TabControl
    4. TabControl.Tag = editor
    5. TabControl.Controls.Add(Tab)
    6. Tab.Controls.Add(editor)
    7. Tab.Text = name
    8. editor.Anchor = AnchorStyles.Right ' ja, hätte man zusammenfassen können, fällt mir grad auf ^^
    9. editor.Anchor += AnchorStyles.Left
    10. editor.Anchor += AnchorStyles.Top
    11. editor.Anchor += AnchorStyles.Bottom
    12. editor.Height = TabControl.Height - 26
    13. editor.Width = TabControl.Width - 8
    14. editor.Document.Text = text



    Problem: Es wird zwar eine die datei geöffnet, aber die tabpage wird nicht angezeigt(also sie wird schon hinzugefügt) und der editor bekommt seine sprache net.
    Leider auch ohne Fehler, was mir hätte weiterhelfen können.

    Hattet ihr das problem vllt schonmal?

    lg.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „martinustreveri“ ()

    Du meinst dass man im Code schreibt "Selectiere mir jetzt bitte Tab nr. blalabla" oder?
    danach such ich auch gerade.. ich kann aber keine Lösung finden.. Währe schön wenn uns jemand helfen könnte..
    Danke :)

    HerrBert
    Linux wird nie das meistinstallierte Betriebssystem sein. Bedenken Sie nur, wie oft man Windows neu installieren muss!
    :thumbsup:
    Ich hätte gern mal die Quellen der Prozedur

    VB.NET-Quellcode

    1. AddOpenTab(TabControl1, code, tcn) ' siehe definition
    gesehen.

    VB.NET-Quellcode

    1. Dim el As Integer = TabControl1.SelectedIndex = TabControl1.TabPages.Count ' = letzte tabpage

    el ist entweder 0 oder 1, falls Du Dich gewundert haben solltest.

    VB.NET-Quellcode

    1. a = b = c

    wird behandelt wie

    VB.NET-Quellcode

    1. a = (b = c)
    , ein boolscher Ausdruck.
    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!
    Also, ich hab die Prozedur AddOpenTab mal ein wenig überarbeitet.
    Statt des CodeEditorControls hab ich ne Textbox genommen.
    Bei mir läufts so.
    Parameter: TabControl1

    VB.NET-Quellcode

    1. Dim editor As New TextBox
    2. Dim Tab As New TabPage
    3. TabControl1.Controls.Add(Tab)
    4. Tab.Controls.Add(editor)
    5. Tab.Text = Name
    6. editor.Anchor = AnchorStyles.Right ' ja, hätte man zusammenfassen können, fällt mir grad auf ^^
    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 = Text
    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!