Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# rtf布局在加载到richtextbox wpf c后发生更改#_C#_Wpf_Text_Richtextbox_Rtf - Fatal编程技术网

C# rtf布局在加载到richtextbox wpf c后发生更改#

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 =

我有一个rtf,当我在word中打开它时,它的布局显示得非常完美,但是当我尝试在wpf应用程序的richtextbox中打开它时,它的布局是关闭的,我希望保持不变。有没有办法做到这一点?以不同的方式读取文件

下面是我用来加载rtf文件的代码

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()