Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VB.NET 2010, Richtextbox während Eingabe formatieren

Frage Entwicklung Visual Studio

Mitglied: emeriks

emeriks (Level 4) - Jetzt verbinden

10.04.2012 um 15:54 Uhr, 7966 Aufrufe, 2 Kommentare

Ich will mir im VB.Net 2010 eine Richtextbox so einrichten, dass schon während der Eingabe bestimmte Wörter hervorgehoben werden, z.B. die Schriftfarbe. Ich bekomme das auch hin, über "TextChanged" und "SelectionColor". Der Faulheit halber lasse ich aber jedesmal den gesamten Inhalt prüfen und formatieren. Die erwartete Textmenge ist so groß nicht sodass das flott geht, auch wenn der Text mal ein paar Zeilen scrollen muss. Aber genau da hakt es. Jedesmal flimmert die Box, weil er jedesmal den Text nach unten durchscrollt und dann wieder an die Eingabestelle zurück springt.

Ich suche jetzt nach einem Weg, ihn davon abzuhalten, beim Durchlaufen des Texts jedesmal die Boax zu scrollen.

Ein einfaches Formular mit einer Richtextbox namens "rtb".

01.
  Private Sub rtb_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtb.TextChanged 
02.
    Try 
03.
      'Merken der aktuellen Cursor-Position 
04.
      Dim CursorPosition As Long = rtb.SelectionStart 
05.
      'Die hervorzuhebende Phrase 
06.
      Dim Phrase = "Hallo" 
07.
      'Die aktuelle Suchposition 
08.
      Dim p As Int32 = 0 - Phrase.Length 
09.
      Do 
10.
        'Das nächste Vorkommen der Phrase suchen 
11.
        p = rtb.Text.IndexOf(Phrase, p + Phrase.Length) 
12.
        If p >= 0 Then 
13.
          rtb.SelectionStart = p 
14.
          rtb.SelectionLength = Phrase.Length 
15.
          rtb.SelectionColor = Color.Red 
16.
          'Application.DoEvents() 
17.
        End If 
18.
      Loop While p >= 0 
19.
      rtb.SelectionStart = CursorPosition 
20.
      rtb.SelectionLength = 0 
21.
 
22.
    Catch ex As Exception 
23.
      'ignoriert 
24.
    End Try 
25.
  End Sub 
26.
 
Das geht doch sicher viel eleganter, oder?
Mitglied: mrtux
10.04.2012 um 16:18 Uhr
Hi !

Nur eine blöde Idee aus dem Stand heraus und besonders elegant ist die leider auch nicht aber probier doch mal wie es aussieht, wenn Du den gesamten Text in eine zweite Box schiebst (die nur im Speicher existiert bzw. unsichtbar ist), ihn dort formatierst und dann wieder in die erste Box zurückschreibst. Natürlich musst Du während die Formatiervorgang läuft, die sichtbare Box vor Änderungen schützen und den Schutz danach wieder aufheben, am besten mit dem Ende des Try Blocks.

mrtux
Bitte warten ..
Mitglied: emeriks
10.04.2012 um 16:33 Uhr
Ja, nee is klar ....

Nicht elegant aber das Ergebnis zählt! geht super! Danke!

Ich erstelle zur Laufzeit eine Hilfsbox, kopiere den RTF-Inhalt rüber, formatiere und kopiere zurück.

01.
    Dim rtb2 As RichTextBox = New RichTextBox 
02.
    rtb2.Rtf = rtb.Rtf 
03.
 
04.
    ....... 
05.
 
06.
    rtb.rtf = rtb2.rtf 
07.
    rtb.SelectionStart = CursorPosition 
08.
    rtb.SelectionLength = 0
Jetzt muss ich das nur noch ein bißchen intelligenter aufbauen, damit der mir auch die Formate wieder raus nimmt, wenn man nachträglich ändert ...
Bitte warten ..
Ähnliche Inhalte
Basic
gelöst Mit vb.net PDF in Word-Dok einfügen (10)

Frage von ahstax zum Thema Basic ...

Batch & Shell
Excel mit Powershell formatieren (13)

Frage von Tastuser zum Thema Batch & Shell ...

Visual Studio
Srv records aus dem dns abfragen unter vb.net (14)

Frage von Herbrich19 zum Thema Visual Studio ...

Microsoft
gelöst RFID zu Tastatur eingabe (4)

Frage von schneerunzel zum Thema Microsoft ...

Neue Wissensbeiträge
Sicherheit

Kanadischer Geheimdienst veröffentlicht erstmals Sicherheitssoftware

Information von BassFishFox zum Thema Sicherheit ...

Virtualisierung

Docker Monitoring und Steuerung per "sen"

Tipp von Frank zum Thema Virtualisierung ...

Viren und Trojaner

Neues Botnetz über IoT-Geräte

(6)

Information von certifiedit.net zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Installation
Windows 10 neu installieren (18)

Frage von imebro zum Thema Windows Installation ...

Router & Routing
Externe IP von innen erreichbar machen (15)

Frage von Windows10Gegner zum Thema Router & Routing ...

Windows 7
Abbruch bei Brennvorgang (14)

Frage von Simulant zum Thema Windows 7 ...