Tag: rtf

RichTextBox控件中的损坏表(自动换行)

可能重复: 为什么richtextbox没有正确显示此表? 我们在Visual Studio 2008中遇到了Windows.Forms.RichTextBox控件的问题。 我们试图在Windows窗体应用程序(.NET 3.5)中显示由第三方作为RTF文件提供的文本。 在此RTF文本文件中有表,其中包含跨越多行的文本。 使用写字板或Word 2003打开时,RTF文件正确显示。 但是,当我们将RTF文件加载到RichTextBox控件中,或者将整个文本(包括表格)复制并粘贴到控件中时,表格无法正确显示 – 单元格只是单行,没有换行。 以下是显示确切问题的图像链接: 在写字板中正确显示 RichTextBox控件中显示不正确 我用google搜索解决方案和第三方.net RTF控件没有成功。 我发现这个确切的问题在另一个论坛上没有回答(实际上这是图像的链接来自哪里),所以我希望堆栈溢出更好;-) 我首选的解决方案是使用能够正确呈现RTF的代码或第三方控件。 但是,我怀疑问题是RichTextBox控件只支持完整RTF规范的子集,因此另一个选项是直接修改RTF以删除不支持的控制代码或以其他方式修复RTF文件本身(在这种情况下任何信息)至于需要删除或修改哪些控制代码将是一个巨大的帮助)。

重新加载RTF后未检测到下划线

我目前正在尝试使用基本格式的RichTextBox为我的新测试笔记软件Lilly Notes工作 。 Brian Lagunas关于这个主题的文章让我朝着正确的方向前进,但是我遇到了一些问题。 如果单击带下划线的文本,则会按下“下划线”按钮,因此正在识别状态。 但是,如果我将其序列化为RTF然后将其反序列化为RichTextBox,则不会检测到它。 由于Lilly Notes中的代码在这里展示并不容易,我创建了一个SSCCE来演示这个问题。 首先,MainWindow.xaml: 这就是它的样子: 在代码隐藏中,我有代码在选择更改时检测格式的状态,并相应地更新下划线按钮的状态。 这与Brian Lagunas的方法没有什么不同。 private void RichTextBox_SelectionChanged(object sender, RoutedEventArgs e) { if (this.RichText.Selection != null) { object currentValue = this.RichText.Selection.GetPropertyValue(Inline.TextDecorationsProperty); this.UnderlineButton.IsChecked = (currentValue == DependencyProperty.UnsetValue) ? false : currentValue != null && currentValue.Equals(TextDecorations.Underline); } } 然后我有一个方法(和另一个辅助方法),它将RTF保存到字符串,然后将其应用于RichTextBox。 我只是为了保持简单而这样做 – 在Lilly Notes中,我将该字符串保存到数据库中,然后在再次运行应用程序时将其加载回来。 public Stream GenerateStreamFromString(string s) { […]

在C#中将图像插入RTF文档

我正在创建一个可以轻松插入图像的RichTextBox子类。 我提到这个问题开始,但我不能让生成的RTF字符串工作。 当我尝试设置RTB的SelectedRtf时,它出错“文件格式无效”。 这是我的代码: internal void InsertImage(Image img) { string str = @”{\pict\pngblip\picw24\pich24 ” + imageToHex(img) + “}”; this.SelectedRtf = str; // This line throws the exception } private string imageToHex(Image img) { MemoryStream ms = new MemoryStream(); img.Save(ms, ImageFormat.Png); byte[] bytes = ms.ToArray(); string hex = BitConverter.ToString(bytes); return hex.Replace(“-“, “”); } 我已经看到了我正在尝试做的工作示例,但使用wmetafiles,但我宁愿不使用该方法。 有任何想法吗? 谢谢, […]

在包含超链接的richtext框v5中选择文本时发生奇怪的移位

当我使用RichTextBox.Select(int start,int length)函数在包含超链接的富文本框中选择文本时,当我尝试选择超链接之后的任何文本时,选择中会有一些变化。 当我删除超链接时,选择正常。 编辑:我使用RichTextBox 5(Visual Studio中的默认值是版本4) public class RichText50W : RichTextBox { [DllImport(“kernel32.dll”, CharSet = CharSet.Auto)] static extern IntPtr LoadLibrary(string lpFileName); protected override CreateParams CreateParams { get { CreateParams prams = base.CreateParams; if (LoadLibrary(“msftedit.dll”) != IntPtr.Zero) { prams.ClassName = “RICHEDIT50W”; } return prams; } } } 只有richtextbox 5+才会出现此问题。 这些图像显示了问题和行为的差异。 如果您尝试这样做,请确保将richtextboxes的HideSelection属性设置为“false”。 选择function显示在按钮上。 对于RTB5,应在上图中选择“文本”中的“e”。 显然,RTB5会选择一些隐藏文字。 我需要它只根据可见文本进行选择。 […]

将txt转换为rtf

我有一堆文本文件,我想转换为rtf。 只是更改代码中的扩展名不起作用,底层文件是相同的。 我需要文本是rtf格式。 谁知道我怎么做到这一点? 问题是,当我加载纯文本文件时,RichTextBox没有格式化新行,因此它将其作为一个连续的文本块加载,而不是插入新行。 唯一的解决方案是打开纯文本文件和“另存为”rtf。

Richtextbox绘制rtf行

我想在RichTextBox中添加一条水平线作为我的文本的分隔符。 我发现了一些RTF代码实现一行的例子并以这种方式尝试了它们: rtbResFile.Rtf = @”{\rtf1{\pard some text.\par}{\pard \brdrb \brdrs \brdrw10 \brsp20 \par}{\pard \par}{\pard some other text.\par}}”; 这种方式实现了创建带边框的空白段落,因此应该看起来像一条线。 但它没有显示任何内容。 只是一个空白段落。 即使我尝试以包含线对象的方式实现它 {\rtf1 {\pard some text.\par} {\pard {\*\do\dobxcolumn\dobypara\dodhgt \dpline\dpxsize9200\dplinesolid\dplinew30}\par} {\pard some other text.\par} } 它仍然没有显示。 RichTextBox是否支持此function? 或者任何其他方式包括rtf字符串中的水平线?

如何在C#中使用纯文本(或字符串)创建RTF?

有人可以帮我在C#中用字符串创建RTF吗? 我在自定义类中保存所有格式(粗体,斜体等)。 杰瑞

如何有选择地为RichTextBox中的字符串加下划线?

在我的程序中单击按钮后 – 选中的ListView条目应该复制到RichTextBox。 ListView包含联系信息,我想要完成的效果类似于Oultook中的效果(从联系簿中选择联系人时)。 我的代码的一部分用于此目的看起来像这样: private void toButton_Click(object sender, EventArgs e) { int start = 0; for (int i = 0; i < contactsListView.SelectedItems.Count; i++) { if (contactsTextBox.TextLength != 0) contactsTextBox.Text += "; "; start = contactsTextBox.TextLength; contactsTextBox.Text += contactsListView.SelectedItems[i].Text + " " + contactsListView.SelectedItems[i].SubItems[1].Text + " [" + contactsListView.SelectedItems[i].SubItems[2].Text + "]"; contactsTextBox.Select(start, contactsTextBox.TextLength); contactsTextBox.SelectionFont […]

从RichTextBox中提取图像

我有一个应用程序,用户可以将图像插入RichTextBox。 我希望能够用一些令牌替换RTF中的所有图像,并将图像存储在单独的文件中。 我稍后会将图像注入RTF。 我设法让插入工作,但最终通过剪贴板粘贴它们(非常像在C#中将图像插入RTF文档 )。 现在的麻烦是如何提取图像。 如何以编程方式选择RichTextBox中的图像? 我是否必须通过剪贴板返回? 就像是: IDataObject data = Clipboard.GetDataObject(); Clipboard.Clear(); _RichTextBox.Select(/* The image */); _RichTextBox.Copy(); Image img = Clipboard.GetImage(); img.Save(“myImage.png”, System.Drawing.Imaging.ImageFormat.Png); Clipboard.Clear(); Clipboard.SetDataObject(data); 有没有更优雅的解决方案,不需要通过剪贴板? 谢谢你的帮助!

iTextSharp可以打开RTF文档,对其进行操作,并将文档导出为PDF吗?

使用iTextSharp(和c#/ ASP.NET)可以打开RTF文档,通过替换一些文本来操作它,插入图像(WMF或PNG),以及将操作文档导出到保留格式的PDF文档原始的RTF文件? 基本上我希望创建一个简单的邮件合并解决方案,模板在RTF中,输出需要在PDF中。 这需要在ASP.NET服务器上运行。