2009-08-21 3 views
4

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

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

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

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

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

  4. Что вы, ребята, нашли для этого лучше?

ответ

9

Если вы все еще идут по пути .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; 
    } 
} 

считанного из here.

имеют хороший день :)

+0

Большое спасибо, я попробую. В конце мы остались с RichText так, как это было, клиент не очень беспокоил его проблемы. – Groo

+0

Да, это выглядит многообещающе. Эта версия RichTextEdit, по-видимому, поддерживает более широкий спектр спецификаций Rtf, хотя она немного отличает некоторые вещи от старой, поэтому нам придется сделать некоторые изменения в нашем Rtf-генераторе. Благодаря! – Groo

+2

Некоторые сравнительные данные lite: Стилизация документа XML с 723-строкой, загружаемого в элемент управления на основе этого примера, сократила время, затраченное с 1700 до 1200 мс, поэтому заметное повышение производительности, но все же оставляет желать лучшего в целом от MS-rich редактировать элементы управления в целом. – Jace

2

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

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

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

+0

Спасибо, выглядит интересно, я обязательно попробую. – Groo

Смежные вопросы