none
Wie mehrere rtf-Boxen auf verschiedenen Reiterkarten anzeigen? RRS feed

  • 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.

    Freitag, 8. August 2008 18:52

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,

    Donnerstag, 14. August 2008 08:02

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,

    Donnerstag, 14. August 2008 08:02
  • Vielen Dank für die umfassende Hilfestellung. Bin jetzt schon ein ganzes Stück weitergekommen.

    Sonntag, 17. August 2008 20:58