使用鼠标或箭头键+ shift选择RichTextBox中的文本时,我可以在字符串的末尾选择一个额外的空白字符。重现:
在RichTextBox中键入几个字符(或根本没有任何字符)
将光标设置为字符串的末尾
按住shift并按右箭头键
您会看到一个窄的突出显示选项,无法删除。
这会导致我的应用程序出现问题,因为当选择额外字符和一些有效文本时,SelectionFont属性返回null。关于如何禁用这个额外角色的任何想法,或者解决它吗?
c#winforms,visual studio 2010
答案 0 :(得分:0)
在2010年的工作室中推出了一个新的winforms应用程序,但实际上无法重现这一点。我可以选择不可见的'字符',但它不会给我带来任何问题。 SelectedFont仍然为我返回一个有效的对象。我可以毫无问题地得到文本。
答案 1 :(得分:0)
有趣。(这是不是 Dr,医学博士,发言。)
如果在空RTF编辑控件中未选择任何内容,SelectedRtf
将返回:
"{\rtf1\ansi\ansicpg1252\deff0\deflang2055\uc1 }"
当在空RTF编辑控件中选择“幻像”内容时,SelectedRtf
会返回:
"{\rtf1\ansi\ansicpg1252\deff0\deflang2055{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
\viewkind4\uc1\pard\f0\fs17\par
}"
当然,SelectedText
在两种情况下都会返回空字符串。
所以我怀疑选择的是metainfo,它确保将替换空选择的新输入文本插入正确的字体。
然而,这似乎是无稽之谈,因为即使没有选择任何内容,新输入的文本也会以正确的字体插入。
所以这一切都没有意义。 (嗯,确实如此,有点 - 见最后一段)
这让我相信这是RichTextBox中的一个错误,或者至少是一个小故障。
格式化信息可能由选择例程创建,该例程确保所选的非空文本将被新格式化的文本替换,格式与其替换的文本格式相同。为此,即使未选择任何文本,选择也必须始终包含格式信息。我认为。也许可以预先选择与默认格式不同的字符和段落格式,不知何故,然后键入文本使用该格式。
答案 2 :(得分:0)
SelectionFont
控件的RichTextBox
属性只能返回单个字体。如果所选范围包含多个字体,则读取SelectionFont
属性将抛出NullReferenceException
。
最有可能发生的事情是RichTextBox
Font
属性与您在所选范围内使用的当前字体不同。最后选择的“额外”字符是Font
属性,而不是您的SelectionFont
属性。
如果您的RichTextBox
只使用一种字体,请确保Font
和SelectionFont
属性相同。
否则,只需检查它是否为空:
if (richTextBox1.SelectionFont != null) {
//do something
}