C# rtf布局在加载到richtextbox wpf c后发生更改#
我有一个rtf,当我在word中打开它时,它的布局显示得非常完美,但是当我尝试在wpf应用程序的richtextbox中打开它时,它的布局是关闭的,我希望保持不变。有没有办法做到这一点?以不同的方式读取文件 下面是我用来加载rtf文件的代码C# rtf布局在加载到richtextbox wpf c后发生更改#,c#,wpf,text,richtextbox,rtf,C#,Wpf,Text,Richtextbox,Rtf,我有一个rtf,当我在word中打开它时,它的布局显示得非常完美,但是当我尝试在wpf应用程序的richtextbox中打开它时,它的布局是关闭的,我希望保持不变。有没有办法做到这一点?以不同的方式读取文件 下面是我用来加载rtf文件的代码 openFile.InitialDirectory = @"C:\"; openFile.Filter = "Text files (*.rtf)|*.rtf|All Files (*.*)|*.*"; openFile.RestoreDirectory =
openFile.InitialDirectory = @"C:\";
openFile.Filter = "Text files (*.rtf)|*.rtf|All Files (*.*)|*.*";
openFile.RestoreDirectory = true;
openFile.Title = "Select Script";
if (openFile.ShowDialog() == true)
{
string originalfilename = System.IO.Path.GetFullPath(openFile.FileName);
TextRange range;
FileStream fStream;
if (openFile.CheckFileExists)
{
range = new TextRange(rtfMain.Document.ContentStart, rtfMain.Document.ContentEnd);
fStream = new FileStream(originalfilename, System.IO.FileMode.OpenOrCreate);
range.Load(fStream, DataFormats.Rtf);
fStream.Close();
}
}
这是xaml
<RichTextBox IsReadOnly="True" x:Name="rtfMain" HorizontalAlignment="Left" Width="673" VerticalScrollBarVisibility="Visible"/>
这里是原始的样子
这就是它在wpf的richtextbox中的外观
试试这样的方法:
if (openFile.CheckFileExists)
{
range = new TextRange(rtfMain.Document.ContentStart, rtfMain.Document.ContentEnd);
using (var fStream = new StreamReader(originalfilename, Encoding.Default,true))
{
range.Text = fStream.ReadToEnd();
}
}
在xaml中:
<RichTextBox IsReadOnly="True" x:Name="rtfMain" HorizontalAlignment="Left"
Width="673" VerticalScrollBarVisibility="Visible" Height="250">
<RichTextBox.Resources>
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
</RichTextBox.Resources>
</RichTextBox>
外观:
添加一张显示“布局关闭”原因和方式的图片可能比发布只加载rtf的代码更有帮助。你怀疑代码中有错误吗?我在想可能有更好的方法来阅读文档,以便在RichTextBox中更准确地显示它只是添加了一些图片来说明问题,以保存rft并与原始文件进行比较(你必须使用一些十六进制查看器),也许这会给你一个错误的线索。如果两个rtf相同,那么问题在于
RichTextBox
如何显示rtf。我看到第一段左边有一个空白,似乎被忽略了。可能是因为在加载之前没有使用SelectAll()
?