Hi,
ich füge zur Laufzeit meinem leeren Tabcontrol neue Tappages hinzu, dazu habe ich folgenden Code:
jetzt versuche ich, das keine Tappage doppelt hinzugefügt wird.
Mein Problem ist, das ich im Moment nicht sehe, wie ich verhindern kann, das die gleiche Tappage noch einmal hinzugefügt wird.
Ich erstelle beim Laden der Form ein TreeView mit Einträgen aus einem Dataset. (Main TabelleName ist der Root Node, Einträge der Main Tabelle(Bezeichnung) ist der Node und Child Einträge(Info) der Main Tabelle sind die Subnode)
Klicke ich auf einen Subnode, soll eine neue TP hinzugefügt werden.
ich hab mehrere Varianten versucht, komme leider nicht dahinter
Hat jemand nen Tip für mich?
2. Frage:
Wie kann ich im der AfterSelect Event verhindern, das auch bei Klick auf den Node der Code ausgeführt wird? Die Tabpage soll nur hinzugefügt werden, wenn ich auf den Subnode drücke.
Danke Euch
Grüße
Micha
EDIT:
habs jetzt auch mal mit einem HashSet(Of TapPage) versucht.
Das Hashset added ja nur, wenn das Element noch nicht vorhanden ist, richtig?
Dann versteh ich nicht, wieso es nicht klappt
Ich vermute, das HashSet kann die TapPages nicht unterscheiden. Wie unterscheide ich die denn?
ich füge zur Laufzeit meinem leeren Tabcontrol neue Tappages hinzu, dazu habe ich folgenden Code:
VB.NET-Quellcode
- 'Code von @'ErfinderDesRades', abgewandelt von UserControl auf RichtextBox
- <Extension()>
- Public Sub AddRTBControls(tc As TabControl, tn As TreeNode, ParamArray rtbs() As RichTextBox)
- tc.SuspendLayout()
- For i = 1 To rtbs.Length
- Dim rtb = rtbs(i - 1)
- Dim txt = If(TryCast(tn.Tag, String), "Untitled-" & i)
- Dim tp = New TabPage With {.Text = txt}
- tp.Controls.Add(rtb)
- tc.TabPages.Add(tp)
- tc.SelectTab(tp.TabIndex)
- Next
- tc.ResumeLayout()
- If Not tc.Visible Then tc.Visible = True
- End Sub
jetzt versuche ich, das keine Tappage doppelt hinzugefügt wird.
Mein Problem ist, das ich im Moment nicht sehe, wie ich verhindern kann, das die gleiche Tappage noch einmal hinzugefügt wird.
Ich erstelle beim Laden der Form ein TreeView mit Einträgen aus einem Dataset. (Main TabelleName ist der Root Node, Einträge der Main Tabelle(Bezeichnung) ist der Node und Child Einträge(Info) der Main Tabelle sind die Subnode)
Klicke ich auf einen Subnode, soll eine neue TP hinzugefügt werden.
VB.NET-Quellcode
- Private Sub tvMain_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles tvMain.AfterSelect
- Dim rtb As New RichTextBox With
- {.Dock = DockStyle.Fill,
- .BackColor = Color.DimGray,
- .ForeColor = Color.WhiteSmoke,
- .Text = Dts.Snippet.GetSnippetText(e.Node.Text),
- .BorderStyle = BorderStyle.None,
- .Font = New Font("Segeo UI", 10)}
- tcSnippet.AddRTBControls(e.Node, rtb)
- End Sub
ich hab mehrere Varianten versucht, komme leider nicht dahinter
Hat jemand nen Tip für mich?
2. Frage:
Wie kann ich im der AfterSelect Event verhindern, das auch bei Klick auf den Node der Code ausgeführt wird? Die Tabpage soll nur hinzugefügt werden, wenn ich auf den Subnode drücke.
Danke Euch
Grüße
Micha
EDIT:
habs jetzt auch mal mit einem HashSet(Of TapPage) versucht.
Das Hashset added ja nur, wenn das Element noch nicht vorhanden ist, richtig?
Dann versteh ich nicht, wieso es nicht klappt
Ich vermute, das HashSet kann die TapPages nicht unterscheiden. Wie unterscheide ich die denn?
"Hier könnte Ihre Werbung stehen..."
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MichaHo“ ()