Mega Code Archive

 
Categories / VB.Net Tutorial / WPF
 

Add Remove TextChanged event for RichTextBox

<Window x: Class="WpfApplication1.Window1"   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   Title="Window1" Height="600" Width="800">   <Grid>     <RichTextBox x:Name="rtbTextContent" TextChanged="RichTextBox_TextChanged" />   </Grid> </Window> //File:Window.xaml.vb Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Documents Imports System.Windows.Media Namespace WpfApplication1   Public Partial Class Window1     Inherits Window     Public Sub New()       InitializeComponent()     End Sub     Private Sub RichTextBox_TextChanged(sender As Object, e As TextChangedEventArgs)       Dim textRange As New TextRange(rtbTextContent.Document.ContentStart, rtbTextContent.Document.ContentEnd)       RemoveHandler rtbTextContent.TextChanged, AddressOf RichTextBox_TextChanged       textRange.ClearAllProperties()       ApplyFormatting()       AddHandler rtbTextContent.TextChanged, AddressOf RichTextBox_TextChanged     End Sub     Private Sub ApplyFormatting()       Dim tp As TextPointer = rtbTextContent.Document.ContentStart       tp = FindNextString(tp)       Dim textRangeEnd As TextPointer = tp.GetPositionAtOffset(1, LogicalDirection.Forward)       Dim tokenTextRange As New TextRange(tp, tp.GetPositionAtOffset(1, LogicalDirection.Forward))       tokenTextRange.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Blue)     End Sub     Private Function FindNextString(tp As TextPointer) As TextPointer       Dim buffer As Char() = New Char(0) {}       tp.GetTextInRun(LogicalDirection.Forward, buffer, 0, 1)       Return tp     End Function   End Class End Namespace