我尝试更改RichTextBox中某些单词的颜色,最后我发现了一个剪切的代码,它帮助了我很多,但现在我有一个问题。代码只会将第一个" NULL"在我的RichTextBox中。
你能帮我找一个解决方案吗?
感谢您的帮助!
private void searchWord()
{
String search = "NULL";
TextPointer text = RTBAuftrag.Document.ContentStart;
while (true)
{
TextPointer next = text.GetNextContextPosition(LogicalDirection.Forward);
if (next == null)
{
break;
}
TextRange txt = new TextRange(text, next);
int indx = txt.Text.IndexOf(search);
if (indx > 0)
{
TextPointer sta = text.GetPositionAtOffset(indx);
TextPointer end = text.GetPositionAtOffset(indx + search.Length);
TextRange textR = new TextRange(sta, end);
textR.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.Red));
}
text = next;
}
}
有人知道可行的方法吗?
答案 0 :(得分:0)
我在code-projekt上找到了一个强大的UserControl http://www.codeproject.com/Articles/42490/Using-AvalonEdit-WPF-Text-Editor
我找到解决方案的方法是:
将此添加到我的.xml
xmlns:avalonEdit="http://icsharpcode.net/sharpdevelop/avalonedit"
这个
<avalonEdit:TextEditor Visibility="Hidden" x:Name="RTBAuftragNEU" Margin="32,413,243,279" KeyDown="RTBKunde_KeyDown" Panel.ZIndex="1" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" > </avalonEdit:TextEditor>
然后把它放到我需要它的班级。
using (Stream s = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ConsultingControls.highlight.xshd"))
{
using (XmlTextReader reader = new XmlTextReader(s))
{
RTBAuftragNEU.SyntaxHighlighting = HighlightingLoader.Load(reader, HighlightingManager.Instance);
}
}
不要忘记为语法创建XSHD文件,您将在codeproject站点上找到完整的教程。
问候, 弗里多林