We currently have an application (Windows service) that connects to another of our applications and grabs invoices. In the invoices there is a RTF field for the footer/header fields. When we grab the data the RTF is converted to plain text with the following code:
public static string ConvertFromRTFToPlainText(string rtfString)
{
if (rtfString == null)
return null;
System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox();
if (rtfString.StartsWith("{\\rtf1"))
rtBox.Rtf = rtfString;
else
rtBox.Text = rtfString;
return rtBox.Text;
}
This has worked for the most part but in some cases (one particular client gets it everytime) I get this exception:
Exception Message:Error creating window handle.
Stack trace:
at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.TextBoxBase.CreateHandle()
at System.Windows.Forms.RichTextBox.set_Rtf(String value)
at SmartTrade.Common.API.Tools.RTFHelperUtility.ConvertFromRTFToPlainText(String rtfString)
at SmartTrade.Desktop.Proxy.API.ObjectMapper.InvoiceObjectMapper.CovertToAPIInvoice(Invoice domainInvoice)
Any help on why this is happening or how we can work around it would be much appreciated.
Edit: Thanks to Jeremy for the explanation, I am after suggestions for RTF conversion alternatives.
System.Windows.Forms
) from a service. It might even be running on a headless box somewhere in a closet. – Redistrict