Проблема RichTextBox (.NET Winforms) (или альтернатива) - PullRequest
5 голосов
/ 21 августа 2009

У меня проблема с RichTextBox .Net. Кажется, что он не поддерживает форматирование ячеек таблицы, что забавно, потому что большую часть времени я создаю таблицы и хочу, чтобы содержимое ячеек было выровнено по правому краю (числа, валюта).

Если я пытаюсь открыть документ WordPad в RichTextBox, он игнорирует (и фактически удаляет ) команды для выравнивания ячеек. Я попытался несколько обходных путей, но не удалось.

  1. Кто-нибудь может придумать идею, чтобы это исправить? (без использования шрифтов и пробелов фиксированной ширины) Это было бы наилучшим решением, поскольку другой код уже работает нормально, поэтому, если требуется только грязный взлом, было бы здорово.

  2. Или вы можете порекомендовать альтернативу .Net Rich Text Editor с открытым исходным кодом? Мне нужен пользовательский элемент управления, который я могу встраивать в свою форму Windows и получать к нему доступ программно (создавать контент или добавлять что-либо). Некоторое время я искал в Интернете, но нашел только элементы управления (Ajax / Javascript).

  3. Есть также редакторы HTML WYSIWYG, которые я мог бы использовать, но все они в основном являются браузером IE, встроенным и отредактированным с использованием MSHTML, и это немного странно иметь в приложении Winforms (возможно, я ошибаюсь) , И в этом случае нам потребуется дополнительное время для реализации генератора контента для HTML - хотя его гораздо проще читать и генерировать, чем RTF IMHO.

  4. Что вы, ребята, считаете лучшим для этой цели?

Ответы [ 2 ]

9 голосов
/ 02 октября 2009

Если вы все еще идете по пути .net winforms, а затем наследуете от RichTextBox и добавляете следующий код, он преобразует RichTextBox в нечто «пригодное для использования»:

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

protected override CreateParams CreateParams
{
    get
    {
       CreateParams cparams = base.CreateParams; 
       if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
       {
          cparams.ClassName = "RICHEDIT50W";
       }
       return cparams;
     }
}

Источник здесь .

Хорошего дня:)

2 голосов
/ 03 июля 2010

3. Существуют также редакторы HTML WYSIWYG, которые я мог бы использовать, но все они в основном являются браузером IE, встроенным и отредактированным с использованием MSHTML, и это немного странно иметь в приложении Winforms (возможно, я ошибаюсь).

Я написал редактор HTML WYSIWYG: HTML-элемент управления ModelText для .NET . Это чистый управляемый код, без зависимости от браузера; он экспортирует .NET API, что позволяет вам программно получать доступ к его содержимому.

Следующая версия, которая будет выпущена (через несколько дней), будет поддерживать выравнивание ячеек (поддерживая свойство CSS "text-align").

...