【问题标题】:Best practice for multi-color textbox in WinForms? [closed]WinForms中多色文本框的最佳实践? [关闭]
【发布时间】:2014-05-08 17:42:10
【问题描述】:

我目前正在使用 WinForms 开发 C# 工具。 - 它正在读取和修改 .txt 文件,我想加入我们在 IDE 中看到的基本功能之一:颜色编码。

我正在处理的 .txt 文件有一些关键字和短语,它们对着色非常有用,以便用户轻松阅读内容。

到目前为止,我发现了一篇关于使用 RichTextBox 并在当时定义一个选择的帖子,然后您会给出不同的颜色。当我想继续评估和着色内容时,这对我来说似乎效率非常低,并且出于某种原因,我的一部分人告诉我这是丑陋的代码。

richTextBox1.SelectionFont = new Font("Verdana", 12, FontStyle.Bold);
richTextBox1.SelectionColor = Color.Red;

我最初希望有一种方法以某种方式(如 html)对文本进行编码,以便在将文本输入到文本框之前为其特定部分着色,然后在可编辑字段中正确呈现它。但似乎这不是一个真正的选择。

做这样的事情的最佳做法是什么?多色编码的可编辑文本字段。我错过了什么吗?有没有“漂亮”的方法来做到这一点?

我希望我的问题是有道理的,我没有做过很多 UI 编程。感谢您的帮助。

【问题讨论】:

  • 我会去用户体验 (UX) SO 网站,他们对这些东西非常好。
  • Is there a "pretty" way to do this? - 是的,它叫做WPF
  • 您正在描述 RichTextBox 控件的确切用途,但您想避免使用它。奇怪的。请参阅How to append text to RichTextBox without scrolling and losing selection? 以解决突出显示选定文本时的闪烁问题。
  • 我没有说我不会使用它——我说我不明白如何有效地为我的特定目的使用它。

标签: c# winforms


【解决方案1】:

您现在所做的不如修改 RTF 文本并使用richTextBox1.Rtf = yourModifiedTextString; 设置它时效率高

实现这一目标的步骤:

  1. 从 strFileText 变量中的文件中读取文本

  2. 使用richTextBox1.Text = strFileText;将该文本设置为richTextBox

  3. 读取这样使用string strRichText = richTextBox1.Rtf;生成的富文本(rtf文本)

  4. 将文本中的关键字替换为您的颜色的富文本格式strRichText = strRichText.Replace("int", "\cf2 int \cf1"); // to show int in second colour in colour table and then set the colour for next text back to default colour (colour 1)

  5. 设置Rtf文本为richTextBox1.Rtf = strRichText;

我希望这会让您对您的要求有所了解。

有关如何为您的 RTF 添加字体和颜色的更多详细信息,您可以阅读

【讨论】:

  • 谢谢,我在找这样的东西
猜你喜欢
  • 2013-03-09
  • 2013-10-02
  • 2010-10-06
  • 2011-10-28
  • 2010-09-10
  • 2011-10-11
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
相关资源
最近更新 更多