【问题标题】:WPF RichTextBox Limit to single line possible?WPF RichTextBox 限制为单行可能吗?
【发布时间】:2013-10-09 00:19:50
【问题描述】:

我有一个奇怪的问题。 我使用 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();

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

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

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

【问题讨论】:

    标签: c# wpf richtextbox


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多