Tag: richtextbox

如何在没有丢失链接的数据库中保存WPF RichTextBox?

我在Richtextbox中有一个链接并且它运行良好但是如果我将Richtextbox保存到数据库中然后加载它要删除的链接我只能看到该链接的文本 例如我的Richtextbox有底部文字: 这是一个链接 但在保存并再次加载后我才能看到文字: 这是一个链接 从所选文本动态创建的超链接如下: RichTextBox.IsDocumentEnabled = true; RichTextBox.IsReadOnly = true; Run run = new Run(RichTextBox.Selection.Text); Hyperlink hyp = new Hyperlink(run) { TargetName = run.Text }; TERM.WordMain main = new TERM.WordMain(); hyp.Click += new RoutedEventHandler(main.hyperLink_Click); hyp.NavigateUri = new Uri(“http://search.msn.com”); RichTextBox.Cut(); var container = new InlineUIContainer(new TextBlock(hyp), RichTextBox.Selection.Start); RichTextBox.IsDocumentEnabled = true; RichTextBox.IsReadOnly = false; 将RTF格式的richtextbox内容保存到文本字段: […]

富文本框如何突出显示文本块而不选择

我需要在RTB中突出显示我的文本的某一部分,而不是在改变字体样式/颜色的意义上,而是在使用特定颜色进行块选择的意义上。 这类似于Visual Studio在调试模式下突出显示一行的方式。 这里重要的是在没有使用richtextbox.select函数的情况下实现上述function,因为我所拥有的richtextbox正在定期更新,如果它在每次更新时调用select函数,用户将很难拖动文本而我不会我不希望这种情况发生。 我在编辑rtf的某个地方听到过一个解决方案,但我不完全确定如何做到这一点。 我很感激任何帮助。

当鼠标指针在RichTextBox中的粗体字上时,如何更改光标?

当鼠标指针位于RichTextBox中的粗体字上时,我想将光标更改为HAND。 这该怎么做?

C#:在不选择文本的情况下更改WinForm RichTextBox的字体样式

我在我的代码中使用RichTextBox ,我在其中显示语法突出显示的代码。 现在,在每次按键时,我都必须重新解析所有令牌并重新为它们重新着色。 但是,在WinForm richtextbox为单个单词着色的唯一方法是逐个选择这些单词并使用SelectionFont对它们进行着色。 但是如果用户输入的速度非常快,那么我选择单个单词会导致非常明显的闪烁(所选单词具有Windows蓝色背景,导致闪烁)。 有没有什么方法可以在不选择它们的情况下为单个单词着色(从而在所选文本周围产生蓝色高光)。 我尝试使用SuspendLayout()在我的着色期间禁用渲染,但这没有帮助。 提前致谢! 这是我的代码: 码: private void editBox_TextChanged(object sender, EventArgs e) { syntaxHighlightFromRegex(); } private void syntaxHighlightFromRegex() { this.editBox.SuspendLayout(); string REG_EX_KEYWORDS = @”\bSELECT\b|\bFROM\b|\bWHERE\b|\bCONTAINS\b|\bIN\b|\bIS\b|\bLIKE\b|\bNONE\b|\bNOT\b|\bNULL\b|\bOR\b”; matchRExpression(this.editBox, REG_EX_KEYWORDS, KeywordsSyntaxHighlightFont, KeywordSyntaxHighlightFontColor); } private void matchRExpression(RichTextBox textBox, string regexpression, Font font, Color color) { System.Text.RegularExpressions.MatchCollection matches = Regex.Matches(this.editBox.Text, regexpression, RegexOptions.IgnoreCase); foreach (Match match in […]

在WPF RichTextBox Control中获取单词光标的方法是打开的

我想知道如何在WPF RichTextBox中获得当前光标所在的单词。 我知道RichTextBox有Selection属性。 但是,这只给了我RichTextBox中突出显示的文本。 相反,即使整个单词没有突出显示,我也想知道光标所在的单词。 任何提示都表示赞赏。 非常感谢你。

富文本框中的图标?

一个简单的问题:)如何将图标插入到richtextbox中。 例如,我希望将“:-)”替换为ImageList [1]? 谢谢!

RichTextBox控件中的损坏表(自动换行)

可能重复: 为什么richtextbox没有正确显示此表? 我们在Visual Studio 2008中遇到了Windows.Forms.RichTextBox控件的问题。 我们试图在Windows窗体应用程序(.NET 3.5)中显示由第三方作为RTF文件提供的文本。 在此RTF文本文件中有表,其中包含跨越多行的文本。 使用写字板或Word 2003打开时,RTF文件正确显示。 但是,当我们将RTF文件加载到RichTextBox控件中,或者将整个文本(包括表格)复制并粘贴到控件中时,表格无法正确显示 – 单元格只是单行,没有换行。 以下是显示确切问题的图像链接: 在写字板中正确显示 RichTextBox控件中显示不正确 我用google搜索解决方案和第三方.net RTF控件没有成功。 我发现这个确切的问题在另一个论坛上没有回答(实际上这是图像的链接来自哪里),所以我希望堆栈溢出更好;-) 我首选的解决方案是使用能够正确呈现RTF的代码或第三方控件。 但是,我怀疑问题是RichTextBox控件只支持完整RTF规范的子集,因此另一个选项是直接修改RTF以删除不支持的控制代码或以其他方式修复RTF文件本身(在这种情况下任何信息)至于需要删除或修改哪些控制代码将是一个巨大的帮助)。

如何在c#中打印文本框的行号

这将是一个很长的post。 如果有任何关于我遵循的程序,我想提出建议。 我想要最好的方法在richtextbox中的每个CRLF终止行旁边打印行号。 我正在使用C#和.NET。 我尝试过使用ListView,但是当行数增加时效率很低。 我已经成功地在自定义控件中使用Graphics来打印行号,到目前为止我对性能感到满意。 但随着行数增加到50K到100K,滚动受到严重影响。 我已经覆盖了WndProc方法并处理所有消息,仅在需要时调用行号打印。 (重写OnContentsResized和OnVScroll会对打印方法进行冗余调用)。 现在行号打印很好,当行数小到高达10K(我很好,因为它很少需要编辑10000行的文件)但我想删除限制。 几点观察 richtexbox中显示的行数是常量+ -1。 因此,性能差异应归因于大文本,而不是因为我使用的是图形绘画。 与小文件相比,大文本的绘制行号较慢 现在的伪代码 FIRST_LINE_NUMBER = _textBox.GetFirstVisibleLineNumber(); LAST_LINE_NUMBER = _textBox.GetLastVisibleLineNUmber(); for(loop_from_first_to_last_line_number) { Y = _textBox.GetYPositionOfLineNumber(current_line_number); graphics_paint_line_number(current_line_number, Y); } 我正在使用GetCharIndexFromPosition并遍历RichTextBox.Lines以查找获取行号的两个函数中的行号。 要获得Y位置,我使用GetPositionFromCharIndex来获取Point结构。 所有上述RichTextBox方法似乎都是O(n),这会降低性能。 (如果我错了,请纠正我。) 我决定使用二叉树来存储行号,以便在通过char索引搜索行号时提高搜索性能。 我想到了一个数据结构,它需要O(n)构造时间,O(nlgn)最坏情况更新和O(lgn)搜索。 这种方法值得付出努力吗? 有没有其他方法可以解决这个问题? 如果需要,我准备从头开始编写控件,我只是希望它重量轻,速度快。

如何跳转到RichTextBox中的特定行?

我正在寻找一个示例代码如何跳转到WPF中RichTextBox的特定行。 我不知道如何做到这一点,在winForms中它非常简单,因为我可以自由设置SelectionStart和SelectionLength,这与WPF不同,等效属性是只读的。

单击WPF richtextbox中的TextBlock

我有一个像这样的flowdocument: var mcFlowDoc = new FlowDocument(); var para = new Paragraph(); para.Inlines.Add(textBlock1); para.Inlines.Add(textBlock2); para.Inlines.Add(textBlock3); mcFlowDoc.Blocks.Add(para); richTextBox1.Document = mcFlowDoc; 我需要一个事件来触发鼠标点击文本块: void TextBlock_Click(object sender, MouseButtonEventArgs e) { TextBlock tb = sender as TextBlock; } Run的事件处理程序被调用并正常工作( 在flowdocument中更改内联 ),但TextBlock的事件处理程序不是。 我究竟做错了什么? 谢谢