How to reproduce: create a document like the one below, then try to add a comment for an element in the paragraph with the bookmarks Public Class Form2 Sub New() InitializeComponent() Dim document As New RadDocument() Dim section As New Section() Dim paragraph As New Paragraph() Dim span As New Span("Content prior range[") Dim span2 As New Span("]Content after range") Dim readOnlyContent As New Span("READ ONLY") Dim rangeStart As New ReadOnlyRangeStart() Dim rangeEnd As New ReadOnlyRangeEnd() rangeEnd.PairWithStart(rangeStart) paragraph.Inlines.Add(span) paragraph.Inlines.Add(rangeStart) paragraph.Inlines.Add(readOnlyContent) paragraph.Inlines.Add(rangeEnd) paragraph.Inlines.Add(span2) section.Blocks.Add(paragraph) document.Sections.Add(section) Dim bmSection As New Section() Dim bmParagraph As New Paragraph() Dim bmSpan As New Span("Content prior bookmark[") Dim bmSpan2 As New Span("]Content after bookmark") Dim bmContent As New Span("Content in Bookmark") Dim bmRangeEnd As New BookmarkRangeEnd() Dim bmRangeStart = DirectCast(bmRangeEnd.CreatePairedStart(), BookmarkRangeStart) bmRangeStart.Name = System.Guid.NewGuid().ToString() bmParagraph.Inlines.Add(bmSpan) bmParagraph.Inlines.Add(bmRangeStart) bmParagraph.Inlines.Add(bmContent) bmParagraph.Inlines.Add(bmRangeEnd) bmParagraph.Inlines.Add(bmSpan2) bmSection.Blocks.Add(bmParagraph) document.Sections.Add(bmSection) Me.RadRichTextEditor1.Document = document End Sub End Class
Steps to reproduce: 1. Use the following code snippet: public partial class Form1 : RadForm { public Form1() { InitializeComponent(); this.WindowState = System.Windows.Forms.FormWindowState.Maximized; this.radRichTextEditor1.Document = ImportDocx(@"..\..\lorem.docx"); this.radRichTextEditor1.LayoutMode = DocumentLayoutMode.Paged; this.radRichTextEditor1.ChangeSectionPageSize(PaperTypeConverter.ToSize(PaperTypes.A3)); this.radRichTextEditor1.ChangeSectionPageOrientation(PageOrientation.Landscape); } private void radButton1_Click_1(object sender, EventArgs e) { this.radRichTextEditor1.PrintPreview(); } private void radButton3_Click(object sender, EventArgs e) { this.radRichTextEditor1.Print(true); } } Calling the PrintPreview method, the page orientation is updated in PrintSettingDialog. However, the page size is not updated correctly. As result, the printed document is not correct. If you call the Print method, the page size and orientation are not updated and the document is printed as in A4/Portrait instead A3/Landscape. Workaround: Use RadPrintDocument: private void radButton2_Click(object sender, EventArgs e) { RadPrintDocument radPrintDocument1 = new RadPrintDocument(); radPrintDocument1.AssociatedObject = this.radRichTextEditor1; radPrintDocument1.Landscape = true; PaperSize ps = new PaperSize(); ps.RawKind = (int)PaperKind.A3; radPrintDocument1.DefaultPageSettings.PaperSize = ps; radPrintDocument1.Print(); //this.radRichTextEditor1.Print(true, radPrintDocument1); }
how to reproduce: check the attached video
To reproduce: add some text to RadRichTextEditor and set the Enabled property to false. You will notice that the text gets bold and blurry. Workaround: instead of disabling RadRichTextEditor, use the ReadOnly property.
To reproduce: try to hide the caret: this.radRichTextEditor1.CaretWidth = 0; Workaround: //Flow layout this.radRichTextEditor1.LayoutMode = DocumentLayoutMode.Flow; Telerik.WinControls.RichTextEditor.UI.DocumentWebLayoutPresenter webLayoutPresenter = this.radRichTextEditor1.RichTextBoxElement.ActiveEditorPresenter as Telerik.WinControls.RichTextEditor.UI.DocumentWebLayoutPresenter; webLayoutPresenter.Caret.Width = 0; //Page layout this.radRichTextEditor1.LayoutMode = DocumentLayoutMode.Paged; Telerik.WinControls.RichTextEditor.UI.DocumentPrintLayoutPresenter activeEditorPresenter1 = this.radRichTextEditor1.RichTextBoxElement.ActiveEditorPresenter as DocumentPrintLayoutPresenter; activeEditorPresenter1.Caret.Width = 0;
To reproduce: please refer to the attached sample project. You will notice that the exported HTML content from the left RadRichTextEditor is imported to the right and the bullets are not the same.
The RTF specifications states that the header of the document should start with "\rtfN" where N is the version of the RTF. Currently, the RtfFormatProvider do not save the version, but only "\rtf". Most software handles this case, but in some cases the document cannot be read.
Workaround: private void ClearDictionaries(RadRichTextEditor editor) { var dictionaries = typeof(DocumentSpellChecker).GetField("dictionaries", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(editor.SpellChecker) as Dictionary<CultureInfo, Lazy<IWordDictionary>>; dictionaries.Clear(); var customDictionaries = typeof(DocumentSpellChecker).GetField("customDictionaries", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(editor.SpellChecker) as Dictionary<CultureInfo, ICustomWordDictionary>; customDictionaries.Clear(); }
How to reproduce: 1. Run the Mail Merge example (QSF) 2. Select the image inside the document and move it to another position
Workaround: public class CustomRadRichTextEditor : RadRichTextEditor { /// <summary> /// Gets or sets the width of the caret. /// </summary> [Browsable(false)] [Category(RadDesignCategory.AppearanceCategory)] public new float CaretWidth { get { float caretWidth = base.CaretWidth; if (float.IsNaN(caretWidth)) { return 2; } return caretWidth; } set { base.CaretWidth = value; } } }
When the caret position is inside Table and a page break is inserted, the table should be split into two tables with a page break between.
How to reproduce: check the attached video Workaround: public partial class Form1 : Form { private RadButtonElement buttonHeader; private RadButtonElement buttonFooter; public Form1() { InitializeComponent(); this.buttonHeader = (RadButtonElement)this.richTextEditorRibbonBar1.GetType().GetField("buttonHeader", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this.richTextEditorRibbonBar1); this.buttonFooter = (RadButtonElement)this.richTextEditorRibbonBar1.GetType().GetField("buttonFooter", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this.richTextEditorRibbonBar1); this.radRichTextEditor1.RichTextBoxElement.IsInHeaderFooterEditModeChanged += RichTextBoxElement_IsInHeaderFooterEditModeChanged; } private void RichTextBoxElement_IsInHeaderFooterEditModeChanged(object sender, EventArgs e) { if (!this.radRichTextEditor1.RichTextBoxElement.IsInHeaderFooterEditMode) { this.buttonHeader.Enabled = true; this.buttonFooter.Enabled = true; } else { this.buttonHeader.Enabled = false; this.buttonFooter.Enabled = false; } } }
To reproduce: - Add a word, press tab the add another word. - Export the document using HtmlFormatProvider. - Import the same document. - The tab is interpreted like 7 spaces.
To reproduce: please refer to the attached gif file Add a custom tab in the ribbon UI and a RadDropDownListElement bound to a list of strings. The first item is selected by default. Insert a table by using the ribbon UI and try to get programmatically the RadDropDownListElement.SelectedValue/Index. It is null/-1 although the text is correct. Workaround: public class CustomRichTextEditorRibbonBar : RichTextEditorRibbonBar { protected override void CreateChildItems(RadElement parent) { base.CreateChildItems(parent); FieldInfo fi = typeof(RadRibbonBar).GetField("ribbonBarElement", BindingFlags.Instance | BindingFlags.NonPublic); RadRibbonBarElement ribbonBarElement = fi.GetValue(this) as RadRibbonBarElement; ribbonBarElement = new CustomRadRibbonBarElement(); fi.SetValue(this, ribbonBarElement); this.RootElement.Children.Add(ribbonBarElement); ribbonBarElement.CommandTabSelecting += delegate (object sender, CommandTabSelectingEventArgs args) { OnCommandTabSelecting(args); }; ribbonBarElement.CommandTabSelected += delegate (object sender, CommandTabEventArgs args) { OnCommandTabSelected(args); }; ribbonBarElement.ExpandedStateChanged += delegate (object sender, EventArgs args) { this.OnRibbonBarExpandedStateChanged(args); }; } } public class CustomRadRibbonBarElement : RadRibbonBarElement { protected override float GetMaximumTabContentHeight() { return 104; } }
To reproduce: - Click the AA Styles button to open the Styles dialog. - Scroll down and select the CodeBlock item - The style does not change