WPF 富文本框 限制为单行
本文关键字:单行 文本 WPF | 更新日期: 2023-09-27 18:34:21
我有一个奇特的问题。我使用RichTextBox作为某种地址栏。基本上看起来像这样
<RichTextBox Loaded="adressBarFormat" LostFocus="adressBarFormat" GotFocus="adressBarFocused" Height="19" Margin="82,14,137,0" Name="adressBar" VerticalAlignment="Top" BorderThickness="0" IsDocumentEnabled="True" Foreground="#FFABABAC" Style="{DynamicResource adressBar}" AcceptsReturn="False" MinWidth="35" >
<FlowDocument Name="flw" PageWidth="1000">
<Paragraph Name="FullAdress">
<Run>C:'Test'Testapp'Meintest</Run>
</Paragraph>
</FlowDocument>
</RichTextBox>
每当文本框未聚焦时,adressBarFormat 就会启动并用两个空格替换"''",并以不同的颜色标记之后的最后一个条目,每当我再次聚焦它时,它就会切换回"''"并均匀着色。这很有效。此外,流文档和所使用的高度确保条形图始终显示为单行。现在在函数中,我只需这样做即可读取我需要的字符串:
TextRange textRange = new TextRange(adressBar.Document.ContentStart,adressBar.Document.ContentEnd);
string richText = textRange.Text;
我还确保在添加新东西之前像这样清除框中的所有内容:
flw.Blocks.Clear();
FullAdress.Inlines.Clear();
adressBar.Document.Blocks.Clear();
然后我做一些正则表达式来查找是否有退格,如果有,字符串将被拆分为代表文件夹的子字符串。它们都被保存为超链接,单击时调用另一个函数。当我完成转换和 syting 时,我这样做是为了再次将其放入我的盒子中。
FullAdress.Inlines.Add(link); //happens multiple times with different links
adressBar.Document.Blocks.Add(FullAdress);
现在发生了一些疯狂的事情:我的盒子里放了一个自动换行符。我可以使用箭头键向下导航到它。每当我再次调用该函数时,这些都会加起来。我首先认为richtText字符串中有一个换行符,但没有。所以我的问题是:有没有办法防止添加新行?
你可以考虑使用 RemoveAt(0((带有适当的检查(而不是使用 Clear((。这将确保您在集合中没有任何杂散的 null。