Benutzer mit den meisten Antworten
Wie mehrere rtf-Boxen auf verschiedenen Reiterkarten anzeigen?

Frage
-
Ich habe vor einen Multipage-Editor zu erstellen. Das mit den Registerkarten funktioniert auch schon allerbest. Nur habe ich jetzt noch das Problem, daß auf den Registerkarten jeweils eine rtf-Box angezeigt werden soll mit allen Ereignissen.
Leider kann ich nicht einfach Dim Editor(A) As RichTextBox schreiben. Denn die rtf-Boxen sollen auch unterschieden werden können. Da die Erstellung der Registerkarten dynamisch ist sollte auch dynamisch entsprechend viele rtf-Boxen entstehen. An diesem Punkt stecke ich zur Zeit absolut fest und weis einfach keinen Weg.
Antworten
-
Hallo,
hier ein kleines Codebeispiel, wie du die Sache realisieren könntest:
Der Code, um ein neues Tab mit dem Editor zu erstellen, könnte so aussehen:
(Die Integer- Variable docCount ist ausserhalb der Methode deklariert, und wird bei jedem Aufruf des folgenden Codes um 1 erhöht. Der aktuelle Wert der Variable wird jeweils an den Names des neuen Tabs angehängt, um zu Verhindern, dass mehrere Tabs den gleichen Namen haben)
'ein neues TabPage- Control erstellen:
Dim newDocTabPage As TabPage = New TabPage("dokument" + docCount.ToString())
'ein neues RichTextBox- Control erstellen:
Dim editor As RichTextBox = New RichTextBox()
'die Eigenschaften und Delegaten der Ereignisse sowie den Namen des RichTextBox- Controls festlegen
editor.Dock = DockStyle.Fill
editor.Name = "editor"
'die Eigenschaften und den Namen des TabPage Controls festlegen
newDocTabPage.Name = "dokument" + docCount.ToString()
'der eben erstellten TabPage das RichTextBox- Steuerelement hinzufügen
newDocTabPage.Controls.Add(editor)
'dem TabControl- Steuerelement auf dem Formular die Tab-Page mit dem Editor hinzufügen
TabControl1.TabPages.Add(newDocTabPage)
'den Zähler inkrementieren
docCount = docCount + 1
Um nun ein Dokument zu schließen, muss die jeweilige TabPage gelöscht werden.
Mit folgendem Code beispielsweise wird die aktuell ausgewählte TabPage gelöscht:
'den gewählten Tab löschen
TabControl1.SelectedTab.Dispose()
(Dabei sollte man prüfen, ob überhaupt noch Tabs existieren, da ansonsten eine Ausnahme ausgelöst wird.)
Um nun z.B. auf die Copy()- Methode der RichTextBox des geöffneten Tabs zuzugreifen, wird so verfahren:
Dim ed As RichTextBox = TabControl1.SelectedTab.Controls("editor")
ed.Copy()
Auf diese Art kannst du auch auf die weiteren Member der editor- RichTextBox zugreifen.
Ich hoffe dir geholfen zu haben,
- Als Antwort markiert Thorsten Dörfler Sonntag, 18. Juli 2010 14:17
Alle Antworten
-
Hallo,
hier ein kleines Codebeispiel, wie du die Sache realisieren könntest:
Der Code, um ein neues Tab mit dem Editor zu erstellen, könnte so aussehen:
(Die Integer- Variable docCount ist ausserhalb der Methode deklariert, und wird bei jedem Aufruf des folgenden Codes um 1 erhöht. Der aktuelle Wert der Variable wird jeweils an den Names des neuen Tabs angehängt, um zu Verhindern, dass mehrere Tabs den gleichen Namen haben)
'ein neues TabPage- Control erstellen:
Dim newDocTabPage As TabPage = New TabPage("dokument" + docCount.ToString())
'ein neues RichTextBox- Control erstellen:
Dim editor As RichTextBox = New RichTextBox()
'die Eigenschaften und Delegaten der Ereignisse sowie den Namen des RichTextBox- Controls festlegen
editor.Dock = DockStyle.Fill
editor.Name = "editor"
'die Eigenschaften und den Namen des TabPage Controls festlegen
newDocTabPage.Name = "dokument" + docCount.ToString()
'der eben erstellten TabPage das RichTextBox- Steuerelement hinzufügen
newDocTabPage.Controls.Add(editor)
'dem TabControl- Steuerelement auf dem Formular die Tab-Page mit dem Editor hinzufügen
TabControl1.TabPages.Add(newDocTabPage)
'den Zähler inkrementieren
docCount = docCount + 1
Um nun ein Dokument zu schließen, muss die jeweilige TabPage gelöscht werden.
Mit folgendem Code beispielsweise wird die aktuell ausgewählte TabPage gelöscht:
'den gewählten Tab löschen
TabControl1.SelectedTab.Dispose()
(Dabei sollte man prüfen, ob überhaupt noch Tabs existieren, da ansonsten eine Ausnahme ausgelöst wird.)
Um nun z.B. auf die Copy()- Methode der RichTextBox des geöffneten Tabs zuzugreifen, wird so verfahren:
Dim ed As RichTextBox = TabControl1.SelectedTab.Controls("editor")
ed.Copy()
Auf diese Art kannst du auch auf die weiteren Member der editor- RichTextBox zugreifen.
Ich hoffe dir geholfen zu haben,
- Als Antwort markiert Thorsten Dörfler Sonntag, 18. Juli 2010 14:17