【发布时间】:2016-10-14 18:37:31
【问题描述】:
如何检查 Richtextbox 上选定的文本是否全部为粗体。例如:
asdasdasdasd ← 这不全是粗体
我全是粗体 ← 这全是粗体
这是我编写的代码,它可以检查是否全部为粗体,但速度较慢,因为它使用Selection.Start 到Selection.Length 逐个检查字符并检查是否为粗体。
bool allbold = true;
int start = richTextBox1.SelectionStart;
int end = richTextBox1.SelectionLength;
for (int i = 1; i < end; i++)
{
richTextBox1.SelectionStart = start+i;
richTextBox1.SelectionLength = 1;
if (!richTextBox1.SelectionFont.Bold)
{
allbold = false;
richTextBox1.SelectionStart = 0;
richTextBox1.SelectionLength = 0;
richTextBox1.SelectionStart = start;
richTextBox1.SelectionLength = end;
richTextBox1.Focus();
}
}
还有比这更有效的方法吗?
【问题讨论】:
-
对于初学者,您可以通过添加
break;来跳出for 循环,只要您发现一些不是粗体的内容。 -
您可以检查
richTextBox1.SelectionFont.Bold,如果所有选定的文本都是粗体,则返回true。有什么问题? -
不确定它是否有效;你测试了吗@Reza?实际上需要的是混合权重的第三个值..
-
@TaW,是的,如果
SelectionFont不为空,那么如果所有选定的文本都是粗体,SelectionFont.Bold将返回 true。SelectionFontis null, when the selection contains different fonts. -
@TaW 新问题是另一个问题,您可能错过了新问题的某些部分。似乎需要重新提出新问题。在这个问题中,OP 需要检查整个选择是否为粗体,在新问题中,OP 想要检测 3 种状态:整体是粗体,它是混合内容并且不包含粗体。此题的答案不能用于新题。
标签: c# .net winforms richtextbox