Tag: 语法高亮显示

突出显示RichTextBox中的文本

我正在尝试使用RichTextBox和我的第一感觉:“使用它有多复杂!”……太棒了…… 所以我试图突出显示我的RichTextBox中包含的文本。 我目前有以下代码: TextRange range = new TextRange(MyTextInput.Document.ContentStart, MyTextInput.Document.ContentEnd); range.Text = @”TOP a multiline text or file END”; Regex reg = new Regex(“(top|file|end)”, RegexOptions.Compiled | RegexOptions.IgnoreCase); foreach (Match match in reg.Matches(range.Text)) { TextPointer start = range.Start.GetPositionAtOffset(match.Index, LogicalDirection.Forward); TextPointer end = range.Start.GetPositionAtOffset(match.Index + match.Length, LogicalDirection.Backward); // text contains the exact match I want string text = […]

.Net正则表达式匹配$与字符串的结尾而不是行,即使启用了多行也是如此

我正在尝试突出显示markdown代码,但我遇到了.NET regex multiline选项的这种奇怪的行为。 以下表达式: ^(#+).+$适用于任何在线正则表达式测试工具: 但它拒绝使用.net: 它似乎没有考虑$标签,只是突出显示所有内容,直到字符串结束,无论如何。 这是我的C# RegExpression = new Regex(@”^(#+).+$”, RegexOptions.Multiline) 我错过了什么?

RichTextBox语法实时突出显示 – 禁用重绘

我正在创建一个带有RichTextBox的函数,并且可以访问关键字列表和’badwords’。 我需要突出显示我在用户输入时在RichTextBox中找到的任何关键字和坏词,这意味着每次发布编辑键时都会调用该函数。 我写过这个函数,但是盒子里的文字和光标闪烁得太过舒服了。 我发现了一个解决方案 – 在我编辑和格式化文本时禁用RichTextBox重绘自身的能力。 但是,我知道这样做的唯一方法是覆盖“WndProc”函数并拦截(我将要收集的内容)重绘消息如下: protected override void WndProc(ref System.Windows.Forms.Message m) { if (m.Msg == 0x00f) { if (paint) base.WndProc(ref m); else m.Result = IntPtr.Zero; } else base.WndProc(ref m); } 在我开始突出显示之前将布尔’paint’设置为false,在我完成时将其设置为true。 但正如我所说,我制作的函数必须采用RichTextBox; 我不能使用子类。 那么,有没有办法禁止从外部自动重新绘制RichTextBox?