2017-02-16 54 views
0

此過程似乎「中斷」了單詞並因此干擾了拼寫檢查。例如,這個單詞enter image description here在C#中正確拼寫並完全以編程方式寫入到FlowDocument中,它似乎在內部分解,因此在稍後打開文件的RTF編輯器(例如Word 2016)上的拼寫檢查程序將發現拼寫錯誤(如上圖所示)。如果單詞被複制,然後直接粘貼到純文本模式,它不會正確顯示拼寫錯誤。保存到以Unicode格式編寫的RichTextBox的FlowDocument中的DataFormats.Rtf之後

如果我使用TextRange保存FlowDocument,行爲並沒有什麼不同。這個問題沒有出現在英文中。問題不一致,該詞可能偶爾顯示正確。

我懷疑這是RTF寫入過程本身的限制或錯誤。也許偶爾會有某種內部換行符。我想知道是否有人總體上找到了解決這個問題的方法。

更新:這是來自RTF純文本的圖像,以防鈴聲響起。中間的粉紅色文字是「錯誤」的單詞,底部和頂部的粉紅色單詞基本上是相同的單詞,但Word 2016沒有發現正確的拼寫錯誤:enter image description here

回答

0

我無法複製使用這個例子的問題(我使用了另一個Unicode字符串)。

public MainWindow() 
    { 
     InitializeComponent(); 
     RichTextBox rtb = new RichTextBox(); 
     rtb.Language = System.Windows.Markup.XmlLanguage.GetLanguage("fa-IR"); 
     rtb.Document.Blocks.Add(new Paragraph(new Run("درست")) { FlowDirection = FlowDirection.RightToLeft }); 

     TextRange tr = new TextRange(rtb.Document.ContentStart, 
          rtb.Document.ContentEnd); 
     using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) 
     { 
      tr.Save(ms, DataFormats.Rtf); 
      ms.Seek(0, System.IO.SeekOrigin.Begin); 
      System.IO.File.WriteAllBytes(@"J:\test.rtf", ms.ToArray()); 
     } 
    } 
+0

也許嘗試在頁面頂部的一些更多的內容。如果我記得正確的話,我在那裏使用的詞是el-GR上的「περισσότερα」。 –

+0

測試這個和其他一些Unicode字符。沒有什麼是錯的。 – Ron