Unplanned
Last Updated: 19 Jun 2017 13:30 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 0
Category: RichTextEditor
Type: Feature Request
3

			
Declined
Last Updated: 19 Jun 2017 12:41 by ADMIN
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. 
Completed
Last Updated: 19 Jun 2017 12:04 by ADMIN
To reproduce:
- Click the InsertMergeFiled button before setting the data source.
- Set the data source.
- Click the button again.
- There are no items in it.
 

Workaround:
Friend Class MyRichTextEditorRibbonBar
    Inherits RichTextEditorRibbonBar



    Protected Overrides Sub dropDownButtonInsertMergeField_DropDownOpening(sender As Object, e As CancelEventArgs)
        MyBase.dropDownButtonInsertMergeField_DropDownOpening(sender, e)
        If Me.dropDownButtonInsertMergeField.Items.Count = 0 Then
            Me.dropDownButtonInsertMergeField.Items.Add(New RadItem)
        End If
    End Sub

End Class

Unplanned
Last Updated: 19 Jun 2017 11:41 by ADMIN
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; 
    }
}
Unplanned
Last Updated: 19 Jun 2017 11:23 by Chuck
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
Unplanned
Last Updated: 19 Jun 2017 10:40 by Bill
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.
Unplanned
Last Updated: 15 Jun 2017 14:06 by ADMIN
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);
}
Completed
Last Updated: 16 May 2017 10:02 by ADMIN
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();
}
Completed
Last Updated: 25 Apr 2017 06:26 by ADMIN
To reproduce:
- Add some comments and try to navigate through them.
- Try add or show/hide the comments while the cursor is in one of the comments.

Workaround:
Create a custom RichTextEditorRibbonBar
and override the following methods:

Public Class MyRichTextEditorRibbonBar
    Inherits RichTextEditorRibbonBar

    Protected Overrides Sub ButtonNewComment_Click(sender As Object, e As EventArgs)
        Dim command As New InsertCommentCommand(Me.AssociatedRichTextEditor.RichTextBoxElement)
        Me.ExecuteCommand(command)

    End Sub

    Protected Overrides Sub ButtonDeleteComment_Click(sender As Object, e As EventArgs)
        Dim command As New DeleteCommentCommand(Me.AssociatedRichTextEditor.RichTextBoxElement)
        Me.ExecuteCommand(command)
    End Sub

    Protected Overrides Sub ButtonPreviousComment_Click(sender As Object, e As EventArgs)
        Dim command As New GoToPreviousCommentCommand(Me.AssociatedRichTextEditor.RichTextBoxElement)
        Me.ExecuteCommand(command)
    End Sub

    Protected Overrides Sub ButtonNextComment_Click(sender As Object, e As EventArgs)
        Dim command As New GoToNextCommentCommand(Me.AssociatedRichTextEditor.RichTextBoxElement)
        Me.ExecuteCommand(command)
    End Sub

    Protected Overrides Sub ToggleButtonShowHideComments_ToggleStateChanged(sender As Object, args As StateChangedEventArgs)

        Dim command As New ToggleCommentsCommand(Me.AssociatedRichTextEditor.RichTextBoxElement)
        Me.ExecuteCommand(command)
    End Sub

    Protected Overrides Sub ButtonDeleteAllComments_Click(sender As Object, e As EventArgs)
        Dim command As New DeleteAllCommentsCommand(Me.AssociatedRichTextEditor.RichTextBoxElement)
        Me.ExecuteCommand(command)
    End Sub

    Protected Overrides Sub HandleDocumentCommandExecuted(document As RadDocument)
        MyBase.HandleDocumentCommandExecuted(document)

        Dim hasComments As Boolean = Me.AssociatedRichTextEditor.Document.EnumerateChildrenOfType(Of CommentRangeStart)().Count() > 0

        Me.buttonPreviousComment.Enabled = hasComments
        Me.buttonNextComment.Enabled = hasComments
        Me.buttonDeleteComment.Enabled = hasComments
        Me.buttonDeleteAllComments.Enabled = hasComments
    End Sub

End Class
Unplanned
Last Updated: 05 Apr 2017 14:51 by ADMIN
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.
Unplanned
Last Updated: 05 Apr 2017 14:36 by ADMIN
How to reproduce:
1. Run the Mail Merge example (QSF) 

2. Select the image inside the document and move it to another position
Unplanned
Last Updated: 08 Mar 2017 07:58 by ADMIN
How to reproduce:
public partial class Form1 : Form
{
    RadRichTextBox tb1;
    RadRichTextBox tb2;
    private bool shouldFocus = false;

    public Form1()
    {
        InitializeComponent();

        tb1 = new RadRichTextBox();
        this.Controls.Add(tb1);

        tb2 = new RadRichTextBox();
        tb2.Location = new Point(200, 0);
        this.Controls.Add(tb2);

        this.Load += Form1_Load;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        StyleDefinition style = new StyleDefinition();
        tb1.IsReadOnly = true;
        tb1.Document.Insert("text 1", style);

        tb2.Document.Insert("text 2", style);
        tb2.IsReadOnly = true;
    }

    private void radButton1_Click(object sender, EventArgs e)
    {
        tb1.IsReadOnly = false;
        tb2.IsReadOnly = false;
        tb1.Focus();
    }
}

Workaround:
public partial class Form1 : Form
{
    RadRichTextBox tb1;
    RadRichTextBox tb2;
    private bool shouldFocus = false;

    public Form1()
    {
        InitializeComponent();

        tb1 = new RadRichTextBox();
        tb1.GotFocus += tb1_GotFocus;
        tb1.LostFocus += tb1_LostFocus;
        this.Controls.Add(tb1);

        tb2 = new RadRichTextBox();
        tb2.Location = new Point(200, 0);
        tb2.GotFocus += tb2_GotFocus;
        tb2.LostFocus += tb2_LostFocus;
        this.Controls.Add(tb2);

        this.Load += Form1_Load;
    }

    private void tb2_LostFocus(object sender, EventArgs e)
    {
        shouldFocus = false;
        tb2.IsReadOnly = true;
    }

    private void tb2_GotFocus(object sender, EventArgs e)
    {
        if (shouldFocus)
        {
            tb2.IsReadOnly = false;
        }
    }

    private void tb1_LostFocus(object sender, EventArgs e)
    {
        tb1.IsReadOnly = true;
    }

    private void tb1_GotFocus(object sender, EventArgs e)
    {
        if (shouldFocus)
        {
            tb1.IsReadOnly = false;
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        StyleDefinition style = new StyleDefinition();
        tb1.IsReadOnly = true;
        tb1.Document.Insert("text 1", style);

        tb2.Document.Insert("text 2", style);
        tb2.IsReadOnly = true;
    }

    private void radButton1_Click(object sender, EventArgs e)
    {
        if (shouldFocus)
        {
            tb2.Focus();
        }
        else
        {
            shouldFocus = true;
            tb1.Focus();
        }
    }
}
Completed
Last Updated: 14 Feb 2017 15:20 by ADMIN
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; 
        }
    }
}
Completed
Last Updated: 14 Feb 2017 09:06 by ADMIN
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;
        }
    }
}

Completed
Last Updated: 14 Feb 2017 07:59 by ADMIN
Trying to export a document which contains hyperlink pasted from Outlook throws KeyNotFoundException. The color of the span is not registered.

Workaround:     
            Telerik.WinForms.Documents.Model.Styles.StyleDefinition style = new Telerik.WinForms.Documents.Model.Styles.StyleDefinition("test", Telerik.WinForms.Documents.Model.Styles.StyleType.Character);
            style.SpanProperties.ForeColor = Color.FromArgb(5,99,193);
            this.radRichTextEditor1.Document.StyleRepository.Add(style);
Unplanned
Last Updated: 06 Feb 2017 10:00 by ADMIN
How to reproduce:
private void radButton1_Click(object sender, EventArgs e)
{
    RadPrintDocument doc = new RadPrintDocument();
    doc.Margins = new Margins(0, 0, 10, 10);

    doc.AssociatedObject = this.radRichTextEditor1;
    RadPrintPreviewDialog dialog = new RadPrintPreviewDialog();
    dialog.Document = doc;
    dialog.ShowDialog();
}

Workaround: apply the margins on the document loaded in the editor
private void radButton1_Click(object sender, EventArgs e)
{
    RadPrintDocument doc = new RadPrintDocument();
    this.radRichTextEditor1.Document.SectionDefaultPageMargin = new Telerik.WinForms.Documents.Layout.Padding(0, 0, 10, 10);

    doc.AssociatedObject = this.radRichTextEditor1;
    RadPrintPreviewDialog dialog = new RadPrintPreviewDialog();
    dialog.Document = doc;
    dialog.ShowDialog();
}

Completed
Last Updated: 30 Jan 2017 10:42 by ADMIN
Unplanned
Last Updated: 06 Jan 2017 11:16 by ADMIN
Local properties are not exported to HTML when style is applied over document element (paragraphs, spans, tables) in case the HtmlExportSettings.StyleExportMode is set to Inline.

To reproduce:
- Add two hyperlinks with differents font and font weights.
- Export them with the following code:
private void button1_Click(object sender, EventArgs e)
{
    HtmlFormatProvider html_provider = default(HtmlFormatProvider);
    string htmlBody = null;
    html_provider = new HtmlFormatProvider();
    html_provider.ExportSettings.StylesExportMode = StylesExportMode.Inline;
    html_provider.ExportSettings.StyleRepositoryExportMode = StyleRepositoryExportMode.ExportStylesAsCssClasses;
    htmlBody = html_provider.Export(radRichTextEditor1.Document);
    File.WriteAllText("test.html", htmlBody);
}
- Open the file and you will notice that the custom styles are not exported (the links are having the same style).

Workaround: 
html_provider.ExportSettings.StylesExportMode = StylesExportMode.Classes;
Completed
Last Updated: 02 Jan 2017 12:27 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Principal
Comments: 10
Category: RichTextEditor
Type: Feature Request
9