WPF RichTextBox可以限制单行吗?

时间:2013-10-08 14:56:18

标签: c# wpf richtextbox

我有一个充满异国情调的问题。 我使用RichTextBox作为某种Adressbar。它基本上看起来像这样

        <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;

我还要确保在我添加新Stuff之前清除我框中的所有内容:

flw.Blocks.Clear();            
FullAdress.Inlines.Clear();
adressBar.Document.Blocks.Clear();

然后我做一些正则表达式来查找是否有退格,如果有退格,则字符串会被拆分为表示文件夹的子字符串。它们都被保存为Hyperlinkobect,在点击时调用另一个函数。 当我完成转换和sytling时,我这样做再次将它放入我的盒子中。:

FullAdress.Inlines.Add(link); //happens multiple times with different links
adressBar.Document.Blocks.Add(FullAdress);

现在出现了一些疯狂的事情:我的盒子里放了一个自动换行符。我可以使用箭头键向下导航到它。每当我再次调用该函数时,这些都会相加。我首先想到richtText字符串中有一个换行符,但没有。 所以我的问题是:有没有办法阻止添加新行?

1 个答案:

答案 0 :(得分:0)

您可以考虑使用RemoveAt(0)(使用适当的检查)而不是使用Clear()。这将确保您的集合中没有任何杂散空值。