RichTextBox 控件仅使用第一种格式
RichTextBox control is only using first formatting
我正在使用 Visual Studio 10,.NET Framework 4 并正在为文本输入创建富文本框控件。我仅通过编写
来格式化文本
*RichTextBox*.SelectionFont = new Font(currentFontFamily, currentFontSize, currentFontStyle);
方法。
当我现在通过 RichTextBox.Rtf 属性 访问 Rtf 格式的字符串时,它有效,但仅包含第一个格式。
例如:
你好世界
结果:
{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Verdana;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\pard\cf1\b\f0\fs18 Hello World\par
}
实际上是 Hello World
这对任何事情都是一样的。字体、大小、颜色、格式等。有人可以帮忙吗??
这可能是因为属性 SelectionStart 和 SelectionLength 无效。如果您通过这些属性明确限制选择,则 RTF 输出将如预期的那样:
richTextBox1.Text = "Hello World";
// limit selection
richTextBox1.SelectionStart = 0;
richTextBox1.SelectionLength = 5;
richTextBox1.SelectionFont = new Font("Tahoma", 12, FontStyle.Bold);
MessageBox.Show(richTextBox1.Rtf);
变成
{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}{\f1\fnil\fcharset0 Microsoft Sans Serif;}}
\viewkind4\uc1\pard\lang1031\b\f0\fs24 Hello\b0\f1\fs17 World\par
}
编辑:
正如下面提到的提问者,问题的真正原因是对 TrimEnd() 的调用:
richTextBox1.Text.TrimEnd()
他一删除它,一切都按预期进行。
我发现了问题。
*RichTextBox*.Text = *RichTextBox*.Text.TrimEnd();
导致 Rtf 丢失部分格式。我认为它只会对文本本身产生影响,而不会对格式产生影响(尤其是在仅删除空白字符时)- 我想我错了。
再次感谢viertausend的帮助
我正在使用 Visual Studio 10,.NET Framework 4 并正在为文本输入创建富文本框控件。我仅通过编写
来格式化文本*RichTextBox*.SelectionFont = new Font(currentFontFamily, currentFontSize, currentFontStyle);
方法。
当我现在通过 RichTextBox.Rtf 属性 访问 Rtf 格式的字符串时,它有效,但仅包含第一个格式。
例如:
你好世界
结果:
{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Verdana;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\pard\cf1\b\f0\fs18 Hello World\par
}
实际上是 Hello World
这对任何事情都是一样的。字体、大小、颜色、格式等。有人可以帮忙吗??
这可能是因为属性 SelectionStart 和 SelectionLength 无效。如果您通过这些属性明确限制选择,则 RTF 输出将如预期的那样:
richTextBox1.Text = "Hello World";
// limit selection
richTextBox1.SelectionStart = 0;
richTextBox1.SelectionLength = 5;
richTextBox1.SelectionFont = new Font("Tahoma", 12, FontStyle.Bold);
MessageBox.Show(richTextBox1.Rtf);
变成
{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}{\f1\fnil\fcharset0 Microsoft Sans Serif;}}
\viewkind4\uc1\pard\lang1031\b\f0\fs24 Hello\b0\f1\fs17 World\par
}
编辑:
正如下面提到的提问者,问题的真正原因是对 TrimEnd() 的调用:
richTextBox1.Text.TrimEnd()
他一删除它,一切都按预期进行。
我发现了问题。
*RichTextBox*.Text = *RichTextBox*.Text.TrimEnd();
导致 Rtf 丢失部分格式。我认为它只会对文本本身产生影响,而不会对格式产生影响(尤其是在仅删除空白字符时)- 我想我错了。
再次感谢viertausend的帮助