在RichtextBox中加粗
我一直在研究我的richtextbox,但是我遇到了一些奇怪的事情…我想在每行粗线上创建第一个单词
使用此代码:
RichTextBox bold = richTextBox1; foreach (string line in bold.Lines) { string name = line.Split(' ')[0]; int srt = bold.Find(name); bold.Select(srt, name.Length); bold.SelectionFont = new Font(bold.Font, FontStyle.Bold); }
但由于某种原因,一些行被跳过。 从我注意到它取决于行开头的单词
例如Name:被跳过但Name1:没问题,ProcessId,VirtualSize和WorkingSetSize也是如此。
例子http://sofzh.miximages.com/c%23/4lov91.png
如果需要更多解释,请告诉我。
这些行添加如下
richTextBox1.Text += "Name: "+ queryObj["Name"] + Environment.NewLine;
在将所有内容添加到richtextbox之后调用使所有第一个单词变为粗体的函数。
线……
int srt = bold.Find(name);
…正在寻找第一个出现该行的单词。 如果您查看未设置为粗体的单词,那么您将看到它们都在富文本框中更早出现。
我的richtextbox没有选择所有出现的情况,如果它们没有以正确的顺序发送到我的粗体函数; 所以我的修复包括在开始文本选择之前检查start(srt)是否大于0。 它是这样的:
foreach (string line in bold.Lines) { int srt = bold.Find(name); if (srt > 0) { bold.Select(srt, name.Length); bold.SelectionFont = new System.Drawing.Font(bold.Font, FontStyle.Bold); } }
而现在它总是会选择第一次出现。
PS: name
是一个string
, bold
是RichTextBox
。