When some commands are executed the RibbonUI is not updated. For example: private void radButton1_Click(object sender, EventArgs e) { ToggleCommentsCommand command = new ToggleCommentsCommand(radRichTextEditor1.RichTextBoxElement); command.Execute(); } Workaround: var button = ribbonBar1.GetType().GetField("toggleButtonShowHideComments", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this.ribbonBar1) as RadToggleButtonElement; button.ToggleState = (radRichTextEditor1.RichTextBoxElement.ShowComments == true) ? ToggleState.On : ToggleState.Off;
To reproduce: RadDocument document = new RadDocument(); Section section = new Section(); Paragraph p = new Paragraph(); Span span = new Span(); span.Text ="test" + Environment.NewLine + "test"; ReadOnlyRangeStart rangeStart = new ReadOnlyRangeStart(); ReadOnlyRangeEnd rangeEnd = new ReadOnlyRangeEnd(); rangeEnd.PairWithStart(rangeStart); p.Inlines.Add(rangeStart); p.Inlines.Add(span); p.Inlines.Add(rangeEnd); section.Blocks.Add(p); document.Sections.Add(section); this.radRichTextEditor1.Document = document; Workaround: add an empty span as last inline element in the paragraph: RadDocument document = new RadDocument(); Section section = new Section(); Paragraph p = new Paragraph(); Span span = new Span(); span.Text ="test" + Environment.NewLine + "test"; ReadOnlyRangeStart rangeStart = new ReadOnlyRangeStart(); ReadOnlyRangeEnd rangeEnd = new ReadOnlyRangeEnd(); rangeEnd.PairWithStart(rangeStart); p.Inlines.Add(rangeStart); p.Inlines.Add(span); p.Inlines.Add(rangeEnd); /////////////////////////////////////// Span emptySpan = new Span(); emptySpan.Text = " "; p.Inlines.Add(emptySpan); /////////////////////////////////////// section.Blocks.Add(p); document.Sections.Add(section); this.radRichTextEditor1.Document = document;
To reproduce: use the following code snippet and refer to the attached screenshot. Cells' width should be identical in both of the cases. RadDocument document = new RadDocument(); Section section = new Section(); Table t = new Table(); t.Borders = new TableBorders(new Border(2, Telerik.WinForms.Documents.Model.BorderStyle.Single, Color.Black)); TableRow r1 = new TableRow(); TableCell cell = new TableCell(); Paragraph p = new Paragraph(); Span s = new Span(); s.Text = "Header"; cell.ColumnSpan = 3; p.Inlines.Add(s); cell.Blocks.Add(p); cell.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Percent, 100); r1.Cells.Add(cell); TableRow r2 = new TableRow(); TableCell cell11 = new TableCell(); Paragraph p11 = new Paragraph(); Span s11 = new Span(); s11.Text = "Cell1,1"; p11.Inlines.Add(s11); cell11.Blocks.Add(p11); cell11.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Percent, 40); TableCell cell12 = new TableCell(); Paragraph p12 = new Paragraph(); Span s12 = new Span(); s12.Text = "Cell1,2"; p12.Inlines.Add(s12); cell12.Blocks.Add(p12); cell12.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Percent, 10); TableCell cell13 = new TableCell(); Paragraph p13 = new Paragraph(); Span s13 = new Span(); s13.Text = "Cell1,3"; p13.Inlines.Add(s13); cell13.Blocks.Add(p13); cell13.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Percent, 50); r2.Cells.Add(cell11); r2.Cells.Add(cell12); r2.Cells.Add(cell13); t.Rows.Add(r1); t.Rows.Add(r2); section.Blocks.Add(t); document.Sections.Add(section); this.radRichTextEditor1.Document = document; Workaround: do not specify the PreferredWidth proeprty for cells with ColumnSpan>1
Workaround: set the FormBorderStyle property to FixedSingle for the respective dialog. RadForm f = this.radRichTextEditor1.RichTextBoxElement.FontPropertiesDialog as RadForm; f.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
To reproduce: - Use the cut option in the context menu then dispose the rich text editor and collect the garbage. Workaround: Telerik.WinControls.RichTextEditor.UI.ContextMenu menu = textEditor.RichTextBoxElement.ContextMenu as Telerik.WinControls.RichTextEditor.UI.ContextMenu; textEditor.RichTextBoxElement.ContextMenu = null; RadDropDownMenu ddm = menu.GetType().GetField("radDropDownMenu", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(menu) as RadDropDownMenu;
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"