首页 文章

无法正确加载Rtf到RichTextBox

提问于
浏览
0

我有一个自定义RichTextBox派生自RichTextBox基类 . 其目的是显示格式化文本 . 但是,任何加载的Rtf都显示为简单文本而没有任何格式:字体,字体大小,字体样式等 .

我尝试了以下代码来加载Rtf :(注意:rtbEx是扩展的richtextbox控件; RTF是包含Rtf的字符串)

  • 使用文件流:
FileStream tempFile = File.Open(@"C:\RTF.rtf", FileMode.Open);
tempFile.Position = 0;
rtbEx.LoadFile(tempFile, RichTextBoxStreamType.RichText);
tempFile.Close();
  • 从指定路径加载:
rtbEx.LoadFile(@"C:\Users\Wilbur Omae\Desktop\RTF.rtf", RichTextBoxStreamType.RichText);
  • 直接设置Rtf:
rtbEx.Rtf = RTF;

在检查rtbEx的Rtf时,它似乎是完美的Rtf,但它显示为纯文本 .

可能是什么问题?

更新1:自定义RichTextBox是自定义 Form 中的一个控件,它将显示为TabPage .

2 回答

  • 0

    作为一种解决方法,我确保只有在通过捕获 Form.Shown 事件显示表单时才设置Rtf,如下所示:

    public class SermonReader : Form
    {
        public RichTextBoxEx rtbEx= new RichTextBoxEx();
        private string RTF = "";
    
        public SermonReader(string rtf)
        {
            RTF = rtf;
    
            Shown += new EventHandler(ehFormShown);
            FormBorderStyle = FormBorderStyle.None;
            TopLevel = false;
    
            Controls.Add(rtbEx);
    
            rtbEx.Dock = DockStyle.Fill;
        }
        private void ehFormShown(object sender, EventArgs e)
        {
            rtbEx.Rtf = RTF;
        }
    }
    

    我不知道为什么这个问题很复杂,但我希望这会有所帮助 .

    还有其他方法吗?随意评论或回答 .

  • 0

    在这种情况下你可以使用剪贴板:

    Clipboard.SetText(RichTextBox1.Rtf, TextDataFormat.Rtf);
    

    并粘贴它

    RichTextBox1.Text= Clipboard.GetText()
    

    它对我有用..尝试一下

相关问题