vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Richtextbox: Vererbung der Formatierung stört 
Autor: Spawnie
Datum: 26.09.16 06:45

Hallo zusammen,

ich habe eine RTB in der ich nach Schlagworten suche und diese einfärben lasse (rot&fett). Der restliche Text soll "unformatiert" also im Standard schwarz&regular erscheinen.

Mein Programm erstellt einen Text, und dank RTB hat der User noch mal die Chance zur Korrektur.
Das klappt soweit auch gut, nur eine Sache stört mich:

Nehmen wir mal an, ich will das Wort "Achtung" rot&fett markiert haben.
Das funktioniert mit folgendem Text ganz gut:
        Dim rtbLines2() As String = WTEdit.RichTextBox1.Lines
        Dim redi As Integer
        For redi = 0 To rtbLines2.GetUpperBound(0)
            If rtbLines2(redi).Contains("Achtung") Then
                WTEdit.RichTextBox1.SelectionStart = _
                  WTEdit.RichTextBox1.GetFirstCharIndexFromLine(redi)
                WTEdit.RichTextBox1.SelectionLength = rtbLines2(redi).Length
                WTEdit.RichTextBox1.SelectionColor = Color.Red
                WTEdit.RichTextBox1.SelectionFont = New Font( _
                  WTEdit.RichTextBox1.Font, FontStyle.Bold)
            End If
        Next
    End Sub
Soweit passt alles. Wenn ich nun aber z.B. unterhalb von "Achtung" weiterschreiben möchte, dann klicke ich hinter "Achtung", drücke ENTER um eine Zeile Platz zu schaffen und schreibe dort dann weiter.
Nur leider hat sich - da ich ja aus der "Achtung" Zeile komme - die rot&fett Formatierung auf meine neue Zeile vererbt.

Hier mal ein Beispiel

Kann ich das deaktivieren?
Oder kann ich den Code so ergänzen, dass neue Zeile = schwarz&regular?

Danke und viele Grüße

Beitrag wurde zuletzt am 26.09.16 um 06:46:13 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Richtextbox: Vererbung der Formatierung stört 
Autor: Manfred X
Datum: 26.09.16 12:08

Hallo!

Du markierst eine ganze Zeile, nicht nur das Wort "Achtung".

Füge zunächst hinter "Achtung" ein zusätzliches Leerzeichen ein,
dessen Position "normal" formatiert ist.
Markiere danach nur das Wort "Achtung" (Selectionlength = 7).
Setze den Cursor hinter das eingefügte Leerzeichen (Selectionstart).

Übrigens in dem Fall wird nichts "vererbt", sondern es wird für
den RTF-Code (ROT) eine entsprechende Klammerung in den Text eingefügt.
Alles was direkt hinter dem Wort "Achtung" eingegeben wird,
liegt noch innerhalb des Klammerbereichs und übernimmt deshalb den
RTF-Code.

Beitrag wurde zuletzt am 26.09.16 um 12:11:35 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Richtextbox: Vererbung der Formatierung stört 
Autor: Spawnie
Datum: 26.09.16 13:02

Hallo Manfred X, danke für den Tipp.
Ich muss mal ein paar Tests machen, ob ich das anwenden kann.
Ich hab mich hier blöd ausgedrückt, und auch das Beispiel war suboptimal.

Besser wäre die Aussage gewesen: Ich suche, ob das Wort ACHTUNG in einer Zeile steht, und färbe dann diese ganze Zeile ein. So wars eigentlich geplant. Nur würde ich wenn es irgendwie geht das nicht in die nächste Zeile schleppen wollen.
Eine Idee war, dass ich es vielleicht versuchen könnte, indem ich alle manuelle Eingaben auf eine gewisse Formatierung zwinge, aber da fand ich keinen Ansatz.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Richtextbox: Vererbung der Formatierung stört 
Autor: Spawnie
Datum: 26.09.16 15:03

OK, ich habe mal die Länge auf exakt das Wort begrenzt, leider auch ohne Erfolg. Wenn ich direkt dahinter klicke, dann übernimmt es immer noch die Formatierung rot&fett.

Erst wenn ich ein Leerzeichen als Puffer dazwischen packe geht es.
Gibt es denn Alternativen, dass man z.B. der manuellen Eingaben fest eine Formatierung zuweist?

Oder eine Hintertür. Mein Programm schiebt Text in die RTB, wenn der dann aber drinne ist, dann sind nur noch manuelle Änderungen vorgesehen, es passiert nix mehr seitens des Programms.
Kann man sich das zu Nutze machen und vielleicht so umbauen, dass als letzter Schritt nach der Textübergabe, und vor dem manuellen Editieren die Farbe auf eine andere Farbe fest verankere?

Beitrag wurde zuletzt am 26.09.16 um 15:09:25 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Richtextbox: Vererbung der Formatierung stört 
Autor: minimalist
Datum: 26.09.16 17:13

Spawnie,
das mit der leertaste funktioniert vielleicht so:
Private Sub RichTextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles RichTextBox1.KeyDown
If e.KeyCode = Keys.Space Then
RichTextBox1.SelectionColor = Color.Black
End If
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Richtextbox: Vererbung der Formatierung stört 
Autor: minimalist
Datum: 26.09.16 17:47

Spawnie,
geht vieleivht noch einfacher im klick event:
If RichTextBox1.SelectionLength = 0 Then
RichTextBox1.SelectionColor = Color.Black
End If
cheers
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Richtextbox: Vererbung der Formatierung stört 
Autor: visualfx
Datum: 26.09.16 17:52

Hallo,

der Vorschlag von minimalist ist schon mal sehr gut !!!

Ich würde allerdings nicht nur die Leertaste / Space abfragen, sondern bei jedem Tastendruck RichTextBox1.SelectionColor = Color.Black aufrufen, also wieder Schwarz einstellen.

Dann müßte sich die RichTextBox genau so verhalten wie Du es erwartest

Gruß, Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Richtextbox: Vererbung der Formatierung stört 
Autor: Spawnie
Datum: 26.09.16 18:40

Wie sage ich aber rein sprachlich "egal was für ne Taste"?

Ich hab minimalists Vorschlag noch nicht ins Programm gepackt, aber rein von der Theorie her könnte es mir gefallen.
Bei Editieren klicke ich irgendwo in den Text und schreibe los. Also ist die Selektion = 0.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Richtextbox: Vererbung der Formatierung stört 
Autor: Spawnie
Datum: 26.09.16 18:49

So, ich habe nun den letzten Code mal ausprobieren können.
Das geht schon sehr stark in die richtige Richtung, ein kleines Teilchen fehlt aber noch zum perfekten Glück, wobei ich aber nicht weiß, wie mans in den Griff kriegen kann.



Mein alter, vorhandener Text geht bis jeweils zur Zeilen - Zahl. Danach das ist neuer Text, einfach wildes Testen - Klimpern. Ich Klicke also in die Zeile ans Ende, tippe, und wie ihr seht: Außer dem ersten Buchstaben wird alles brav blau.
Nur der erste Buchstabe nicht. Wieso auch immer da die Regel keine Anwendung findet
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

"egal was für ne Taste" 
Autor: visualfx
Datum: 26.09.16 18:56

Hallo,

"egal was für ne Taste"

Private Sub RichTextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles _
  RichTextBox1.KeyDown
    RichTextBox1.SelectionColor = Color.Black
End Sub
Gruß, Stefan

Beitrag wurde zuletzt am 26.09.16 um 18:57:32 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Richtextbox: Vererbung der Formatierung stört 
Autor: Spawnie
Datum: 26.09.16 19:39

Yay, das funktioniert genau so wie ichs mir vorgestellt hab bisher.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Richtextbox: Vererbung der Formatierung stört 
Autor: Spawnie
Datum: 26.09.16 23:17

So, ausführlich getestet.

Die Funktion nur noch blau zu schreiben ist zu 100% erfüllt.
Leider reagiert aber ein anderer Teil meines Programms sehr, sehr merkwürdig.

    Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles _
      FTUndo.Click
        If Me.RichTextBox1.CanUndo Then
            Me.RichTextBox1.Undo()
        End If
    End Sub
 
    Private Sub FTWdh_Click(sender As Object, e As EventArgs) Handles _
      FTWdh.Click
        If Me.RichTextBox1.CanRedo Then
            Me.RichTextBox1.Redo()
        End If
    End Sub
Meine Redo und Undo Buttons zicken ein wenig.

- Ich markiere Text1 & lösche ihn
- Ich markiere Text2 & lösche ihn
- Ich drücke "Undo"

Und nun wird es merkwürdig. Klick 1 auf Undo bringt den gelöschten Text2 zurück, nur halt in blau. Klick 2 macht garnix (sichtbares). Klick 3 macht den Text wieder schwarz, Klick 4 holt Text 1 zurück in blau, Klick 5 macht nix (sichtbares), Klick 6 macht den Text schwarz.

Vorher war es wirklich exakt wie es sein soll. 1 x Klick = 1 x rückgängig.

Ich hab aber beim besten Willen keinen Schimmer wo dieses unsinnige Verhalten her kommt? Wieso 3 x klicken und diese komische Abfolge?

Habt ihr eine Idee?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel