2013-10-08 59 views
0

我有一個奇特的問題。 我使用RichTextBox作爲某種Adressbar。基本上,它看起來像這樣WPF 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,點擊後會調用另一個函數。 當我完成轉換和sytling我這樣做是爲了再次得到它在我的盒子:

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

現在一些瘋狂的情況:有一個自動換行放在我的盒子。我可以使用箭頭鍵向下導航。無論何時我再次調用函數,這些都會加起來。我首先想到richtText字符串中有一個換行符,但沒有。 所以我的問題是:有什麼辦法來防止一條新線被添加?

回答

0

您可能會考慮使用RemoveAt(0)(通過適當的檢查)而不是使用Clear()。這將確保你在你的收藏中沒有任何流浪的空值。