Copy some content and paste it in the editor. The PasteOptions dialog remains opened and if the user clicks the PrintPreview button an error occurs:
Stack trace:
************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at Telerik.WinControls.RichTextEditor.UI.PasteOptionsPopup.OnRichTextBoxLayoutUpdated(Object sender, EventArgs e)
at Telerik.WinControls.Layouts.ContextLayoutManager.fireLayoutUpdateEvent()
at Telerik.WinControls.Layouts.ContextLayoutManager.UpdateLayout()
at Telerik.WinForms.Documents.UI.DocumentPrintPresenter.Telerik.WinForms.RichTextEditor.IDocumentEditorPresenter.UpdateLayout()
at Telerik.WinForms.RichTextEditor.RadRichTextBox.<>c__DisplayClass653_0.<UpdateEditorLayout>b__0()
at Telerik.WinForms.RichTextEditor.RadRichTextBox.UpdateEditorLayout(Boolean focusCarret, Boolean updateCaretSize, Boolean async)
at Telerik.WinForms.RichTextEditor.RadRichTextBox.set_ActiveEditorPresenter(IDocumentEditorPresenter value)
at Telerik.WinForms.RichTextEditor.RadRichTextBox.Telerik.WinControls.UI.IPrintable.BeginPrint(RadPrintDocument sender, PrintEventArgs args)
at Telerik.WinControls.UI.RadPrintDocument.OnBeginPrint(PrintEventArgs e)
at System.Drawing.Printing.PrintDocument._OnBeginPrint(PrintEventArgs e)
at System.Drawing.Printing.PrintController.Print(PrintDocument document)
at System.Drawing.Printing.PrintDocument.Print()
at System.Windows.Forms.PrintPreviewControl.ComputePreview()
at System.Windows.Forms.PrintPreviewControl.CalculatePageInfo()
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()
Workaround: use different instances of RibbonUI
Workaround: private void CopyButton_Click(object sender, EventArgs e) { this.radRichTextEditor1.Document.EnsureDocumentMeasuredAndArranged(); if (this.radRichTextEditor1.Document.Selection.IsEmpty) { return; } string selectedText = this.radRichTextEditor1.Document.Selection.GetSelectedText(); DocumentFragment fragmentToCopy = this.radRichTextEditor1.Document.Selection.CopySelectedDocumentElements(true); DataObject dataObject = new DataObject(); if (selectedText != "") { ClipboardEx.SetText(null, selectedText, dataObject); } ClipboardEx.SetDocument(fragmentToCopy, dataObject); ClipboardEx.SetDataObject(dataObject); }
Note: it should be closed automatically when all words are corrected. To reproduce: 1. Enter some misspelled words and open the context menu with right mouse click. 2. Show the SpellCheckingDialog. 3. Add a word to the dictionary. The SpellCheckingDialog will be closed immediately. However, if you press to ignore the word/words, the dialog remains opened. Workaround: cancel the SpellCheckingDialog.FormClosing event except when the close button is clicked: public Form1() { InitializeComponent(); this.radRichTextEditor1.IsSpellCheckingEnabled = true; RadButton buttonClose = ((SpellCheckingDialog)this.radRichTextEditor1.RichTextBoxElement.SpellCheckingDialog).Controls["buttonClose"] as RadButton; buttonClose.MouseDown += buttonClose_MouseDown; ((SpellCheckingDialog)this.radRichTextEditor1.RichTextBoxElement.SpellCheckingDialog).FormClosing += SpellCheckingDialog_FormClosing; } bool shouldClose = false; private void buttonClose_MouseDown(object sender, MouseEventArgs e) { shouldClose = true; } private void SpellCheckingDialog_FormClosing(object sender, FormClosingEventArgs e) { if (e.CloseReason != CloseReason.FormOwnerClosing) { e.Cancel = !shouldClose; shouldClose = false; } }
To reproduce: - Create a new winforms project. - Drop a RadRichTextEditor on the form. - Drop a button on the form. - In the button Click event add: radRichTextEditor1.ShowSpellCheckingDialog(); - Run the project. - Click the button - a message is displayed "The spelling check is complete". - Type some text with a spelling error in the rich text editor. - Click the button again - a System.InvalidOperationException exception occurs. Workaround: radRichTextEditor1.RichTextBoxElement.SpellCheckingDialog = new SpellCheckingDialog();
Description and workaround: It appears that Outlook produces different RTF contents when using its different Copy commands. In some cases the RTF string produced by Outlook contains empty spans which is not a valid element in our implementation. To handle that case, you can subscribe to the CommandExecuting event to capture the Paste command before it was executed, strip the empty spans, and then modify the clipboard contents with a valid RTF string. Additionally, when you try to delete the text of pasted hyperlinks using backspace, an exception will be thrown at some point (for example, after pasting the link \\server\folder1\somefile.txt and deleting the dot). The following code snippet demonstrates how to handle deleting pasted links: Private Sub radRichTextEditor1_CommandExecuting(sender As Object, e As CommandExecutingEventArgs) Handles radRichTextEditor1.CommandExecuting If TypeOf e.Command Is DeleteCommand Me.RadRichTextEditor1.RichTextBoxElement.InvalidateMeasure(true) Me.RadRichTextEditor1.RichTextBoxElement.UpdateLayout() End If End Sub The following code snippet demonstrates how to handle removing empty spans: Private Sub radRichTextEditor1_CommandExecuting(sender As Object, e As CommandExecutingEventArgs) Handles radRichTextEditor1.CommandExecuting If Not (TypeOf e.Command Is PasteCommand) Then Return End If Dim docString As String = Nothing Dim docObj As Object = Clipboard.GetData("Rich Text Format") If docObj IsNot Nothing AndAlso docObj.[GetType]() = GetType(String) Then docString = DirectCast(docObj, String) End If Dim document As RadDocument = Nothing Using stream As New MemoryStream() Dim writer As New StreamWriter(stream) writer.Write(docString) writer.Flush() stream.Seek(0, SeekOrigin.Begin) Try document = New RtfFormatProvider().Import(stream) Catch ex As Exception System.Diagnostics.Debug.WriteLine("Error reading document from clipboard:" & vbLf + ex.ToString()) End Try End Using If document IsNot Nothing Then Dim emptySpans As New List(Of Span)() For Each span As var In document.EnumerateChildrenOfType(Of Span)() If [String].IsNullOrEmpty(span.Text) Then emptySpans.Add(span) End If Next If emptySpans.Count = 0 Then Return End If For Each span As var In emptySpans span.Parent.Children.Remove(span) Next Dim modifiedRtf As String = New RtfFormatProvider().Export(document) Clipboard.SetData("Rich Text Format", modifiedRtf) End If End Sub
To reproduce: - Create a document that contains a numbered list (set different font size for the list). - Export it to html and import it back. - You will notice that the numbers are larger the the other text.
To reproduce: use the following code snippet. The attached screenshot illustrates the missing border. Note: It seems that the RadRichTextEditor remains in Portrait orientation although the RadPrintDocument.DefaultPageSettings.Landscape property is set to true. This issue can be replicated if you specify the PreferredWidth property in pixels in such a way that the table fits in A4 format (wider side). The A4 size print measures 21.0 x 29.7cm. private void Form1_Load(object sender, EventArgs e) { RadDocument document = new RadDocument(); document.LayoutMode = Telerik.WinForms.Documents.Model.DocumentLayoutMode.Paged; Section sec = new Section(); sec.PageOrientation = PageOrientation.Landscape; sec.PageSize = PaperTypeConverter.ToSize(PaperTypes.A4); document.Sections.Add(sec); Paragraph para = new Paragraph(); Table table = new Table(); Border b = new Border(Telerik.WinForms.Documents.Model.BorderStyle.Single, System.Drawing.Color.Black); TableBorders tb = new TableBorders(b); table.Borders = tb; sec.Blocks.Add(table); //first row TableRow tableRow = new TableRow(); table.AddRow(tableRow); //cell 0,0 TableCell cell = new TableCell(); cell.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Percent ,20); tableRow.Cells.Add(cell); cell.Blocks.Add(para); Span span = new Span("Cell 0,0"); para.Inlines.Add(span); //cell 0,1 cell = new TableCell(); cell.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Percent ,80); tableRow.Cells.Add(cell); //second row tableRow = new TableRow(); table.AddRow(tableRow); //cell 1,0 cell = new TableCell(); cell.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Percent ,20); tableRow.Cells.Add(cell); para = new Paragraph(); cell.Blocks.Add(para); span = new Span("Cell 1,0"); para.Inlines.Add(span); //cell 1,1 cell = new TableCell(); cell.PreferredWidth = new TableWidthUnit(TableWidthUnitType.Percent ,80); tableRow.Cells.Add(cell); radRichTextEditor1.Document = document; Telerik.WinControls.UI.RadPrintDocument printDocument = new Telerik.WinControls.UI.RadPrintDocument(); printDocument.AssociatedObject = this.radRichTextEditor1; printDocument.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0); printDocument.DefaultPageSettings.Landscape = true; System.Drawing.Printing.PaperSize paperSize = new System.Drawing.Printing.PaperSize(); paperSize.RawKind = 9; printDocument.DefaultPageSettings.PaperSize = paperSize; this.radRichTextEditor1.Print(true, printDocument); }
To reproduce: - Add RadRichTextEditor and RichTextEditorRibbonBar to a form. - Start the application and add some text. - Change the font size with the ribbon bar. - Select the text and open the mini toolbar.
html tables cannot be properly pasted in word when imported table size is defined in "pt". consider adding the a table like this as well: <html> <body> <table border="1"> <tbody> <tr> <td>A</td> <td>B</td> <td>C</td> </tr> <tr> <td>A1</td> <td>B1</td> <td>C1</td> </tr> </tbody> </table> </body> </html>
Steps to reproduce: 1. Create a new project 2. Drop a RadRichTextEditor on the form 3. Run the project 4. Type some text 5. Press Ctrl+R to align the text right 6. Press Ctrl+L to align the text left. The text is left aligned, but the right aligned text is not cleared till the control is invalidated.
To reproduce: - Paste some text with a barcode font in a RadRichTextBox. - Export to a pdf document. - In the pdf document the text is not displayed as barcode.
To reproduce: - Import the following string using the HtmlFormatProvider: "<html><head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n </head>\r\n <body text=\"#000000\" bgcolor=\"#FFFFFF\">\r\n Hej\r\n\r\n <title>Sv: Tekniska </title>\r\n \r\n\r\n <br>\r\n <pre>-- \r\nMvh Anders\r\n<a class=\"moz-txt-link-abbreviated\" href=\"http://www.abc.se\">www.abc.se</a></pre>\r\n </body>\r\n</html>" Workaround: - Put a space or between the </a> and </pre> tags.
To reproduce Write a word in an RightToLeft language and then type "." You will notice that the dot is moved to the end of the word.
To reproduce: - Add RichTextEditorRibbonBar and associate it with RadRichTextEditor at design time. - Show the form and then force the garbage collector. Workaround: - Associate the controls in the load event. - Set the AssociatedRichTextEditor to null just before the form is closed. protected override void OnLoad(EventArgs e) { base.OnLoad(e); richTextEditorRibbonBar1.AssociatedRichTextEditor = radRichTextEditor1; } protected override void OnClosing(System.ComponentModel.CancelEventArgs e) { richTextEditorRibbonBar1.AssociatedRichTextEditor = null; base.OnClosing(e); }
Copy the following image from the browser and paste it to RadRichTextEditor: https://en.wikipedia.org/wiki/File:Telerik_Logo.png. IOException is thrown when pasting the image. However, it is loaded at the end. Export the image with the following code: private void radButton1_Click(object sender, EventArgs e) { DocumentFormatProviderBase provider = new XamlFormatProvider(); byte[] byteData = provider.Export(this.radRichTextEditor1.Document); } ArgumentException occurs. Workaround: save the image first and copy it from Paint for example.