RichTextBox не отображает все данные при переопределении CreateParams

янайденный какой-то старый код, написанный NoBugz (Ганс Пассант) который, если я понимаю, заставляет richtextbox использовать RTF 5.0 вместо 4.0. В основном это просто класс, который наследуетRichTextBox и переопределяетCreateParams собственность как таковая

private static IntPtr moduleHandle;

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern IntPtr LoadLibrary(string lpFileName);

protected override CreateParams CreateParams
{
    get
    {
        if (moduleHandle == IntPtr.Zero)
        {
            moduleHandle = LoadLibrary("msftedit.dll");
            if ((long)moduleHandle < 0x20) throw new Win32Exception(Marshal.GetLastWin32Error(), "Could not load Msftedit.dll");
        }
        CreateParams createParams = base.CreateParams;
        createParams.ClassName = "RichEdit50W";
        if (this.Multiline)
        {
            if (((this.ScrollBars & RichTextBoxScrollBars.Horizontal) != RichTextBoxScrollBars.None) && !base.WordWrap)
            {
                createParams.Style |= 0x100000;
                if ((this.ScrollBars & ((RichTextBoxScrollBars)0x10)) != RichTextBoxScrollBars.None)
                {
                    createParams.Style |= 0x2000;
                }
            }
            if ((this.ScrollBars & RichTextBoxScrollBars.Vertical) != RichTextBoxScrollBars.None)
            {
                createParams.Style |= 0x200000;
                if ((this.ScrollBars & ((RichTextBoxScrollBars)0x10)) != RichTextBoxScrollBars.None)
                {
                    createParams.Style |= 0x2000;
                }
             }
        }
        if ((BorderStyle.FixedSingle == base.BorderStyle) && ((createParams.Style & 0x800000) != 0))
        {
            createParams.Style &= -8388609;
            createParams.ExStyle |= 0x200;
        }
        return createParams;
    }
}

Когда я выполняю это переопределение, я не могу заставить свой RTF отображаться после первой строки. например

string rtf = @"{\rtf1\ansi\deff0{\fonttbl{\f0 Arial;}{\f1 Courier New;}}\viewkind4\uc1\pard\lang1033\f0\fs20 {\pard\f0\ul\b Activated Partial Thromboplastin Time\b0 : Collected: "
                 + @"8/21/2012 4:15:00 AM\ulnon\f0\par}\par\pard\lang1033\f0\fs20 {\trowd"
                 + @"\trql\trgaph100\trrh280\trleft0\intbl"
                 + @"\cellx4000"
                 + @"\cellx9500"
                 + @"Activated Partial Thromboplastin Time\cell"
                 + @"36.8 Seconds\cell"
                 + @"\intbl\row}";
CustomRtb cRtb = new CustomRtb();
cRtb.Rtf = rtf;//Only the first line shows in the form...

Является ли новый стандарт намного менее прощающим ошибок Rtf или как? Мне нужно более красивое форматирование таблицы, предлагаемое 5.0

UPDATE
Данные отображаются, если я изменяю

+ @"\trql\trgaph100\trrh280\trleft0\intbl"

в

+ @"\trql\trgaph100\trrh280\trleft0"

После дальнейшего тестирования я обнаружил, что RTF выглядит хорошо в MS Word. Фактически, наш код генерирует RTF с MsftEdit, как указано здесь:

{\*\generator Msftedit 5.41.21.2510;}, Я открываю фактический RTF в Word, и он выглядит хорошо. Я использую этот код, и он в значительной степени соответствует тому, что я вижу в слове. Мне просто нужно удалить некоторые границы. Я собираюсь сделать более глубокое копание, чтобы понять, почему Msftedit генерирует RTF, чтобы он немного выровнялся в таблицах. Но да, в целом этот вопрос просто выходит за рамки того, что я могу сделать в SO.

Ответы на вопрос(1)

Ваш ответ на вопрос