Workaround: specify the users' dictionary with colors when the user is changed. private void radRichTextEditor1_UserInfoChanged(object sender, EventArgs e) { FieldInfo fi = typeof(TrackChangesOptions).GetField("userToColorMap", BindingFlags.Instance | BindingFlags.NonPublic) ; Dictionary<string, Telerik.WinControls.RichTextEditor.UI.Color> userToColorMap = fi.GetValue(radRichTextEditor1.RichTextBoxElement.TrackChangesOptions) as Dictionary<string, Telerik.WinControls.RichTextEditor.UI.Color>; userToColorMap = new Dictionary<string, Telerik.WinControls.RichTextEditor.UI.Color>(); userToColorMap.Add("Boby1", Telerik.WinControls.RichTextEditor.UI.Color.FromRgb(0, 255, 255)); userToColorMap.Add("Boby2", Telerik.WinControls.RichTextEditor.UI.Color.FromRgb(255, 0, 255)); fi.SetValue(radRichTextEditor1.RichTextBoxElement.TrackChangesOptions, userToColorMap); }
In some cases where you have RTL word and a number, the word order is different than the order displayed in MS Word (see attached doc). This might be related to the applied styles, because if you apply normal style, the order will be the same as in RadRichTextEditor.
Workaround: private void radRichTextEditor1_CommentShowing(object sender, Telerik.WinForms.Documents.UI.CommentShowingEventArgs e) { ((SelectionMiniToolBar) this.radRichTextEditor1.RichTextBoxElement.SelectionMiniToolBar).Shown+=Form1_Shown; } private void Form1_Shown(object sender, EventArgs e) { ((SelectionMiniToolBar)sender).Visible = false; ((SelectionMiniToolBar)sender).VisibleChanged+=Form1_VisibleChanged; } private void Form1_VisibleChanged(object sender, EventArgs e) { ((SelectionMiniToolBar)sender).Visible = false; }
Workaround: private void radRichTextEditor1_CommentShowing(object sender, Telerik.WinForms.Documents.UI.CommentShowingEventArgs e) { this.radRichTextEditor1.RichTextBoxElement.ContextMenu.Opened-=ContextMenu_Opened; this.radRichTextEditor1.RichTextBoxElement.ContextMenu.Opened+=ContextMenu_Opened; } private void ContextMenu_Opened(object sender, Telerik.WinForms.Documents.UI.Extensibility.ContextMenuPlacementEventArgs e) { this.radRichTextEditor1.RichTextBoxElement.ContextMenu.Hide(); }
Workaround: handle the CommandExecuted event and manually adjust the location of these forms public Form1() { InitializeComponent(); this.radRichTextEditor1.CommandExecuted += radRichTextEditor1_CommandExecuted; } private void radRichTextEditor1_CommandExecuted(object sender, Telerik.WinForms.Documents.RichTextBoxCommands.CommandExecutedEventArgs e) { if (e.Command is ShowInsertSymbolWindowCommand) { ((InsertSymbolDialog)this.radRichTextEditor1.RichTextBoxElement.InsertSymbolWindow).Location = Screen.FromControl(this).WorkingArea.Location; } else if (e.Command is ShowFindReplaceDialogCommand) { ((FindReplaceDialog)this.radRichTextEditor1.RichTextBoxElement.FindReplaceDialog).Location = Screen.FromControl(this).WorkingArea.Location; } }
To reproduce: - Write some text. - Change the current user. - Repeat three or four times. - Open spellchecking dialog.
Note: this problem is related to the following feedback item: http://feedback.telerik.com/Project/154/Feedback/Details/174882-fix-radrichtexteditor-spellcheckingdialog-should-not-be-closed-when-a-misspell You should apply the suggested workaround in order to be able to replicate the problem. Steps to reproduce: 1. Enter some misspelled words. 2. Open the spell checking form by using the context menu. 3. "Ignore" the first misspelled word. 4. The next wrong word is highlighted. If you add it to the dictionary, the previously ignored word is highlighted as well. Workaround: use the "Ignore All" option.
Workaround: void radRichTextEditor1_CommandExecuting(object sender, CommandExecutingEventArgs e) { if (e.Command is PasteCommand) { e.Cancel = true; PasteNewText(); } } public void PasteNewText() { DocumentFragment clipboardDocument = null; string clipboardText = null; bool clipboardContainsData = false; if (ClipboardEx.ContainsDocument(null)) { clipboardDocument = ClipboardEx.GetDocument(); clipboardContainsData = true; } else if (ClipboardEx.ContainsText(null)) { clipboardText = ClipboardEx.GetText(null); clipboardContainsData = true; } if (!clipboardContainsData) { return; } if (clipboardDocument != null) { RadDocument doc = new RadDocument(); RadDocumentEditor editor = new RadDocumentEditor(doc); editor.InsertFragment(clipboardDocument); TxtFormatProvider provider = new TxtFormatProvider(); string plainText = provider.Export(doc); this.radRichTextEditor1.RichTextBoxElement.ActiveDocumentEditor.Insert(plainText); } else if (!string.IsNullOrEmpty(clipboardText)) { this.radRichTextEditor1.RichTextBoxElement.ActiveDocumentEditor.Insert(clipboardText); } }
To reproduce: - Export document with an inline UI elements to HTML. - Import the document. Workaround: - Manually export the UI elements information and then create new UI elements when the document is imported: void ImportSettings_InlineUIContainerImporting(object sender, InlineUIContainerImportingEventArgs e) { PropertyInfo property = typeof(InlineUIContainerImportingEventArgs).GetProperty("Handled"); property.GetSetMethod(true).Invoke(e, new object[] { true }); ObjectHandle handle = Activator.CreateInstance("Telerik.WinControls.UI", e.CommentContent); Object control = handle.Unwrap(); InlineUIContainer container = new InlineUIContainer(); RadElementUIContainer radContainer = new RadElementUIContainer(control as RadElement); container.UiElement = radContainer; container.Height = 30; container.Width = 300; e.TargetParagraph.Inlines.Add(container); } //export private void btnWrite_Click(object sender, EventArgs e) { HtmlFormatProvider provider = new HtmlFormatProvider(); provider.ExportSettings.InlineUIContainerExporting += ExportSettings_InlineUIContainerExporting; File.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\TelerikUITest.html", provider.Export(this.radRichTextEditor1.Document)); } void ExportSettings_InlineUIContainerExporting(object sender, Telerik.WinForms.Documents.FormatProviders.Html.InlineUIContainerExportingEventArgs e) { string control = ((RadElementUIContainer)e.InlineUIContainer.UiElement).Element.ToString(); e.CommentContent = control; }
To reproduce: - Copy the content from the attached document - do not copy the last row. - Remove the bookmarks like this: bookmarks = radRichTextEditor1.Document.GetAllBookmarks().ToArray(); foreach (BookmarkRangeStart item in bookmarks) { radRichTextEditor1.Document.GoToBookmark(item); radRichTextEditor1.DocumentEditor.DeleteBookmark(item); } Workaround: var invalidStarts = this.radRichTextBox.Document .EnumerateChildrenOfType<BookmarkRangeStart>() .Where(start => start.End == null) .ToList(); foreach (var invalidStart in invalidStarts) { invalidStart.Parent.Children.Remove(invalidStart); } Note that when this workaround is used the document history will be deleted as well, which means that the undo operation will no longer hold information for previous operations
1. Open RadRichTexEditor and type the following text: "שדג:3" or open the attached file 2. Save the document as docx file 3. Compare the results in MS Word and in RadRichTexEditor Observed result: in RadRichTexEditor the text is visualized as: ":3שדג" Expected result: The text should be visualized as: "שדג:3"
To reproduce: radRichTextEditor.Document = new RadDocument(); radRichTextEditor.Document.MeasureAndArrangeInDefaultSize(); radRichTextEditor.UpdateEditorLayout(); radRichTextEditor.Document.CaretPosition.MoveToLastPositionInDocument(); var p = new Paragraph(); p.Inlines.Add(new Span("Cell")); var cell = new TableCell(); cell.Blocks.Add(p); var row = new TableRow(); row.Cells.Add(cell); var table = new Table(); table.Rows.Add(row); var section = new Section(); section.Blocks.Add(table); radRichTextEditor.Document.Sections.Add(section); radRichTextEditor.Document.CaretPosition.MoveToLastPositionInDocument(); var provider = new RtfFormatProvider(); var txt = provider.Export(radRichTextEditor.Document); Clipboard.SetText(txt, TextDataFormat.Rtf); Workaround: measure the document after the section is added: radRichTextEditor.Document.Sections.Add(section); radRichTextEditor.Document.MeasureAndArrangeInDefaultSize(); radRichTextEditor.UpdateEditorLayout();
When the specified length of the stream is larger than the actual one, Adobe throws errors and removes the image. Workaround: Set the format provider settings: PdfFormatProvider provider = new PdfFormatProvider(); PdfExportSettings exportSettings = new PdfExportSettings(); exportSettings.ContentsDeflaterCompressionLevel = 9; exportSettings.ImagesDeflaterCompressionLevel = 9; provider.ExportSettings = exportSettings;
To reproduce: please refer to the attached sample project. Workaround: export RadRichTextEditor's content to a .doc file. Then, use the RadWordsProcessing library to import the .doc file and export it as a pdf: Telerik.WinForms.Documents.FormatProviders.OpenXml.Docx.DocxFormatProvider provider = new Telerik.WinForms.Documents.FormatProviders.OpenXml.Docx.DocxFormatProvider(); string fileName = @"..\..\exported.doc"; string pdfFileName = @"..\..\exported.pdf"; Stream s = new FileStream(fileName,FileMode.Create, FileAccess.Write); provider.Export(document, s); s.Close(); s.Dispose(); Telerik.Windows.Documents.Flow.FormatProviders.Docx.DocxFormatProvider provider2 = new Telerik.Windows.Documents.Flow.FormatProviders.Docx.DocxFormatProvider(); using (Stream input = File.OpenRead(fileName)) { Telerik.Windows.Documents.Flow.Model.RadFlowDocument document2 = provider2.Import(input); Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider provider3 = new Telerik.Windows.Documents.Flow.FormatProviders.Pdf.PdfFormatProvider(); using (Stream output = File.OpenWrite(pdfFileName)) { provider3.Export(document2, output); } } System.Diagnostics.Process.Start(pdfFileName);