如何在不丢失内容格式VB.NET的情况下将RTF文件加载到RichTextBox

时间:2014-09-12 06:25:58

标签: vb.net winforms

我正在尝试将由word 2013创建的.rtf文件加载到richtextbox中,但我的内容格式有问题..我试过这段代码..

RichTextBox1.LoadFile(App_Path & "/Artikel/Profile/Info Num1.rtf", RichTextBoxStreamType.RichText)

显示的内容但缺少内容格式......

然后我尝试将此代码发送给......

Dim SR As StreamReader
SR = File.OpenText(App_Path & "/Artikel/Profile/Info Num1.rtf")
RichTextBox1.Rtf = SR.ReadToEnd
SR.Close()

显示内容并且文本格式显示良好,但表格和图像不规则..

简单问题如何在不丢失包含表格和图像格式的内容格式的情况下将.rtf文件加载到richtextbox?

2 个答案:

答案 0 :(得分:0)

这取决于RTF版本。您在RichTextBox控件中使用的版本是RTF 1.6,它可能与您的Microsoft Office Word应用程序不同。显然,您无法使用以后版本中添加的功能。

  1. 版本时间表[编辑]
  2. 1987:RTF 1.0
  3. 1994年1月:RTF 1.3
  4. 1995年9月:RTF 1.4
  5. 1997年4月:RTF 1.5
  6. 1999年5月:RTF 1.6
  7. 2001年8月:RTF 1.7
  8. 2004年4月:RTF 1.8
  9. 2008年3月:RTF 1.9.1
  10. RichTextBox支持旧版本的RTF格式。此控件不支持在Microsoft Word中创建的所有类型的格式。 Becausae的RTF版本可以不同。

    Microsoft Office使用RichTextBox控件无法支持的以下版本的RTF格式。

    • Microsoft Office Word 2000:RTF v.7.7
    • Microsoft Office Word 2003:RTF v.1.8
    • Microsoft Office Word 2007及更高版本:RTF v.1.9.1

    Wikipedia

    上详细了解RTF格式及其版本

答案 1 :(得分:0)

您可能需要升级RichTextBox组件:

public class RichBoxEx : RichTextBox {

  [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
  private static extern IntPtr LoadLibrary(string lpFileName);

  protected override CreateParams CreateParams {
    get {
      var cp = base.CreateParams;
      if (LoadLibrary("msftedit.dll") != IntPtr.Zero) {
        cp.ClassName = "RICHEDIT50W";
      }
      return cp;
    }
  }
}

并使用更安全的Path.Combine版本加载文件:

richBoxEx1.LoadFile(Path.Combine(App_Path, @"Artikel/Profile/Info Num1.rtf"));

有些功能会被删除,因为RichTextBox不支持页眉和页脚等。