我有一个自定义的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。
答案 0 :(得分:0)
在这种情况下你可以使用剪贴板:
Clipboard.SetText(RichTextBox1.Rtf, TextDataFormat.Rtf);
并粘贴
RichTextBox1.Text= Clipboard.GetText()
它对我有用..试试吧
答案 1 :(得分: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;
}
}
我不知道为什么这个问题很复杂,但我希望这会有所帮助。
还有其他解决方案吗?随意评论或回答。
答案 2 :(得分:-2)
我在 winformscontrol 中的富文本框遇到了同样的问题 在对话框 (MFC) 中,rtb 应填充为 rtf,但 设置 RichTextBox.Rtf 后,从文件或剪贴板加载它都是未格式化的。 我可以通过在 OnInitDialog 中使用 Postmessage with UpdataData(FALSE) 来解决它(再次设置 RichTextBox.Rtf) 在处理程序中。好像创作还没有完成..