C# 克服RichTextBox';什么是限制?

C# 克服RichTextBox';什么是限制?,c#,winforms,rtf,C#,Winforms,Rtf,我正在使用WinForms和RichTextBox控件开发一个应用程序。此控件允许使用属性更改选定文本的字体,对RTF格式进行不同的更改。我有一个按钮可以在文本上切换粗体: richTextBoxEditor.SelectionFont = new Font(richTextBoxEditor.SelectionFont, richTextBoxEditor.SelectionFont.Style ^ FontStyle.Bold); 我的其他按钮(斜体、下划线)除了FontStyle

我正在使用WinForms和RichTextBox控件开发一个应用程序。此控件允许使用属性更改选定文本的字体,对RTF格式进行不同的更改。我有一个按钮可以在文本上切换粗体:

richTextBoxEditor.SelectionFont = new Font(richTextBoxEditor.SelectionFont,
    richTextBoxEditor.SelectionFont.Style ^ FontStyle.Bold);
我的其他按钮(斜体、下划线)除了FontStyle.Bold部分的代码相同,该部分已更改为适当的格式

现在的问题是,如果我写“Hello World”并将“Hello”改为斜体,然后我尝试将整个“Hello World”改为粗体,“Hello”将失去斜体。我理解它为什么会这样做(因为整个选择的枚举是空的,所以当我切换粗体时,斜体标志保持为0),但我正在试图找到克服这一问题的方法。除了一个角色一个角色地改变风格之外,我想不出任何东西

你们有更好的主意吗


谢谢。

听起来每个角色都是你最安全的赌注。除非您正在创建一个成熟的字处理器,否则这似乎不是一个重大问题

另一种选择是根据当前样式分解选择。因此,如果有人选择的区域比应用样式的区域大,则需要将选择分为两部分:完全重叠样式区域的部分和完全不重叠样式区域的部分。你需要一个字符一个字符地查找在哪里分解选择,但至少你不必对每个字符都应用样式