Hallo,
ich will mir einen kleinen Editor bauen als MDI-Childfenster innerhalb meiner Anwendung.
Basis ist eine Richtextbox namens rtbMacro. Das klappt auch soweit, Text ist editierbar, veränderbar über das Clipboard etc. pp.
Zusätzlich soll es einen Suchen/Ersetzen-Dialog geben, ähnlich wie bei Notepad.
Der Dialog zur Eingabe des Suchbegriffs (ganz ähnlich wie bei Notepad) ist in einer zusätzlichen Form, die mit .Show(Me) angezeigt wird, wobei Me die Form mit dem Editor ist.
Aus dem Dialog heraus wird dann die FindText-Methode auf der Form des Editors aufgerufen.
Das Dumme ist nur, dass für alle Aufrufe aus dem Kontext des Suchen/Ersetzen-Dialogs die Text-Eigenschaft der Richtextbox leer erscheint.
Darum wird natürlich mein Suchstring auch nie gefunden.
In der Richtextbox steht aber noch immer das Eingetippte drin, ich kann das auch ändern und ergänzen. Bewege ich mich wieder im Kontext der Editor-Form, ist auch der Inhalt für den Code sichtbar.
Sicher hat das irgendetwas mit dem Scope zu tun, aber natürlich meckert der Compiler auch nicht.
Der Code verweist auch immer eindeutig auf das richtige Objekt.
Alle Debug.Print-Ausgaben zeigen mir, dass bis zum Aufruf des Suchen/Ersetzen-Dialogs die .Text-Eigenschaft der Richtextbox tatsächlich Text enthält.
Dies ist der Such-Code, den ich aus dem Suchen/Ersetzen Dialog heraus aufrufe. Der Code selbst ist innerhalb der Editor-Form deklariert.
Was ist da los? Hab ich noch irgendwas vergessen oder gibts da wirklich noch einen Bug?
Gruß
Carbonunit
ich will mir einen kleinen Editor bauen als MDI-Childfenster innerhalb meiner Anwendung.
Basis ist eine Richtextbox namens rtbMacro. Das klappt auch soweit, Text ist editierbar, veränderbar über das Clipboard etc. pp.
Zusätzlich soll es einen Suchen/Ersetzen-Dialog geben, ähnlich wie bei Notepad.
Der Dialog zur Eingabe des Suchbegriffs (ganz ähnlich wie bei Notepad) ist in einer zusätzlichen Form, die mit .Show(Me) angezeigt wird, wobei Me die Form mit dem Editor ist.
Aus dem Dialog heraus wird dann die FindText-Methode auf der Form des Editors aufgerufen.
Das Dumme ist nur, dass für alle Aufrufe aus dem Kontext des Suchen/Ersetzen-Dialogs die Text-Eigenschaft der Richtextbox leer erscheint.
Darum wird natürlich mein Suchstring auch nie gefunden.
In der Richtextbox steht aber noch immer das Eingetippte drin, ich kann das auch ändern und ergänzen. Bewege ich mich wieder im Kontext der Editor-Form, ist auch der Inhalt für den Code sichtbar.
Sicher hat das irgendetwas mit dem Scope zu tun, aber natürlich meckert der Compiler auch nicht.
Der Code verweist auch immer eindeutig auf das richtige Objekt.
Alle Debug.Print-Ausgaben zeigen mir, dass bis zum Aufruf des Suchen/Ersetzen-Dialogs die .Text-Eigenschaft der Richtextbox tatsächlich Text enthält.
Dies ist der Such-Code, den ich aus dem Suchen/Ersetzen Dialog heraus aufrufe. Der Code selbst ist innerhalb der Editor-Form deklariert.
VB.NET-Quellcode
- ' Text suchen im Editor
- Friend Sub FindText(ByVal strSearchFor As String)
- Dim intPosition As Integer = 0
- Dim chrSearch() As Char = strSearchFor.ToCharArray
- Debug.Print(" --- FindText --- ")
- Debug.Print(Me.rtbMacro.Text)
- intPosition = Me.rtbMacro.Find(chrSearch(0)) ' gibt immer -1 zurück, weil .Text-Eigenschaft leer erscheint...
- If intPosition >= 0 Then
- Me.rtbMacro.SelectionStart = intPosition
- Me.rtbMacro.SelectionLength = strSearchFor.Length
- Else
- Dim strMsg As String = VBQUOTE & strSearchFor & VBQUOTE & " wurde nicht gefunden!"
- MessageBox.Show(strMsg, frmSearchDialog.Text)
- End If
- End Sub
Was ist da los? Hab ich noch irgendwas vergessen oder gibts da wirklich noch einen Bug?
Gruß
Carbonunit