Форматирование текста в WinForm Label

OP не говорит, почему он не работает, но, похоже, проблемы связаны с кодировкой файла. Если у меня есть ANSI-кодированный файл, и я делаю:

var s = "“This is a test” ‘Another test’";
s = s.replace(/[“”]/g, '"').replace(/[‘’]/g,"'");
document.writeln(s);

Я получаю:

"This is a test" "Another test"

Я преобразовал кодировку в UTF-8, исправил умные кавычки (которые разбились когда я изменил кодировку), а затем преобразован обратно в ANSI, и проблема исчезла.

Обратите внимание, что когда я копировал и вставлял двойные и одиночные смарт-цитаты с этой страницы в свой тестовый документ (кодированный ANSI) и запускал этот код:

var s = "“This is a test” ‘Another test’";
for (var i = 0; i < s.length; i++) {
    document.writeln(s.charAt(i) + '=' + s.charCodeAt(i));
}

Я обнаружил, что все умные кавычки появились как ? = 63.

Итак, в ОП определите, откуда берутся интеллектуальные кавычки, и убедитесь, что они - коды символов, которые вы ожидаете от них. Если это не так, подумайте об изменении кодировки источника, чтобы они пришли как “ = 8220, ” = 8221, ‘ = 8216 и ’ = 8217. Используйте мой цикл для проверки источника, если смарт-кавычки отображаются с любыми значениями charCodeAt(), отличными от перечисленных мной, replace() не будет работать так, как написано.

21
задан Bryan Roth 14 August 2008 в 16:52
поделиться

4 ответа

Это не возможно с маркировкой WinForms как есть. Маркировка должна иметь точно один шрифт точно с одним размером и одной поверхностью. У Вас есть несколько опций:

  1. отдельное Использование маркирует
  2. Create новый производный класс Управления, который делает его собственный рисунок через GDI + и использование это вместо Маркировки; это - вероятно, Ваш наилучший вариант, поскольку он дает Вам полный контроль над тем, как дать управлению команду форматировать свой текст
  3. Использование сторонний элемент управления "метка", который позволит Вам вставить отрывки HTML (существует набор - проверяют CodeProject); это было бы чужой реализацией № 2.
18
ответ дан TheSmurf 14 August 2008 в 16:52
поделиться

Едва ли, но Вы могли фальсифицировать его с RichTextBox только для чтения без границ. RichTextBox поддерживает Формат RTF (rtf).

15
ответ дан ageektrapped 14 August 2008 в 16:52
поделиться

Я также интересовался бы обнаружением, если это возможно.

, Когда мы не могли найти решение, мы обратились к управлению 'Супермаркировкой' Компонента, которое позволяет разметку HTML в маркировке.

1
ответ дан Martin 14 August 2008 в 16:52
поделиться
  1. Create the text as a RTF file in wordpad
  2. Create Rich text control with no borders and editable = false
  3. Add the RTF file to the project as a resource
  4. In the Form1_load do

    myRtfControl.Rtf = Resource1.MyRtfControlText

5
ответ дан 29 November 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: