我一直在研究我的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也是如此。
Example http://i40.tinypic.com/4lov91.png
如果需要更多解释,请告诉我。
这些行添加如
richTextBox1.Text += "Name: "+ queryObj["Name"] + Environment.NewLine;
在将所有内容添加到richtextbox之后调用使所有第一个单词变为粗体的函数。
答案 0 :(得分:9)
线......
int srt = bold.Find(name);
...正在寻找第一次出现该行的单词。如果您查看未设置为粗体的单词,那么您将看到它们都出现在富文本框的前面。
答案 1 :(得分:0)
我的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
。