Tabcontrol Textbox Problem

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von sonne75.

    Tabcontrol Textbox Problem

    Guten Morgen

    Und zwar arbeite ich zur Zeit an einem Editor. Das erstellen der neuen Tabs so wie das erstellen der Textbox, ist kein problem doch wenn ich nun ein weiteren
    Tab erstelle, so verliert die Textbox in dem Tab davor seine Events.

    Nun meine Frage, wie stelle ich es an das der Editor Events wie TextChanged usw behält ??

    Hier einmal wie ich meine Tabs erstelle.

    VB.NET-Quellcode

    1. Public WithEvents rtb As New FastColoredTextBox
    2. Dim i As Integer = 0
    3. Dim rtb_info(10000) As String
    4. Public Sub new_tab2(ByVal type As String, ByVal project_name As String)
    5. rtb = New FastColoredTextBox
    6. TabControl1.TabPages.Add(i, project_name)
    7. TabControl1.SelectTab(i)
    8. rtb.Dock = DockStyle.Fill
    9. rtb.AutoIndent = True
    10. TabControl1.SelectedTab.Controls.Add(rtb)
    11. rtb_info(i) = type
    12. i += 1
    13. autocomplete(type)
    14. End Sub


    Das Event TextChanged ist wichtig da dieser Editor Syntax Highlighting können soll.

    Hoffe ich ab es einigermassen Verständlich rüber gebracht :) und das mir Jemand bei dem Problem Helfen kann.

    MFG
    Blackfire495
    Willkommen im Forum. :thumbup:

    blackbox495 schrieb:

    so verliert die Textbox in dem Tab davor seine Events
    Wie ganz genau äußert sich das?
    ---
    In Deinem Code steht zwei Mal (also ein Mal zuviel)

    VB.NET-Quellcode

    1. New FastColoredTextBox

    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 hast ein einziges Objekt "FastColoredTextBox" und weist ihm nur neue Referenzen zu.

    Erstell für jeden Tab eine neue, dann wird es klappen. Die Events kannst du dann mit EventHandler hinzufügen, dann brauchst du kein WithEvents.
    @sonne75 : Sicher ? Ich meine die Events stehen in VB nur mit dem WithEvents Schlüsselwort zur Verfügung.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    ThePlexian schrieb:

    WithEvents
    mit Handles ...
    oder
    AddHandler
    geht beides.
    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!
    Danke für die Schnelle Antwort.

    @RodFromGermany Also als ich festgestellt habe, dass mein Text keine Farbe hat,
    habe ich mir zum test unter rtb_TextChanged eine MsgBox ausgeben lassen.
    Doch wenn ich nun ein neuen Tab erstelle, kommt die MsgBox nur im neuen Tab.

    Was ich jetzt überlegt habe, ob es nicht möglich wäre, mit Addhandler auf ein eigenen TextChanged zu verweißen.
    Weiß aber leider nicht ob das möglich ist da ich noch nie mit Addhandler gearbeitet habe.
    Sry hatte gerade RodFromGermany geantwortet und hab nicht gesehen, das noch jemand geschrieben hat :)

    Habs nun um geschrieben und es funktioniert.

    Aus
    Public WithEvents rtb As New FastColoredTextBox

    wurde
    Dim rtb as new FastColoredTextBox

    Und beim Tab erstellen habe ich mit Addhandler auf rtb_TextChanged verwiesen.

    Und @sonne75 jetzt wo ich es geändert hab, hab ichs auch verstanden warum es nicht ging =)

    Durch das Public WithEvents rtb As New FastColoredTextBox wurde nur 1 FastColoredTextBox mit Events erstellt.
    Und als ich ein neuen Tab erstellt habe, war das Event TextChanged halt für den 2ten Tab aktiv.

    Naja Trotzdem danke Thread kann geClosed werden.