Свойство UseCompatibleTextRendering не создается дизайнером, если для него установлено значение false

Я не хочу использовать совместимый рендеринг текста, но я не хочу использовать

Application.SetCompatibleTextRenderingDefault(false);

Естественно, я думал, что все, что мне нужно было сделать, это установить для свойства UseCompatibleTextRendering каждого ярлыка значение false. Однако конструктор форм, по-видимому, генерирует код для установки свойства, только если для UseCompatibleTextRendering задано значение true.

Нет проблем, я думал, это должно означать, что UseCompatibleTextRendering инициализируется в false по умолчанию. Тем не менее, когда я запускаю свою форму, о чудо, я вижу уродливый CompatibleTextRendering. Итак, вопрос:

1) Почему дизайнер не добавляет код для UseCompatibleTextRendering, когда я устанавливаю значение false, и это когда я устанавливаю значение true, если значение по умолчанию равно true?

2 ответа

Решение

Дизайнер не добавляет код для настройки UseCompatibleTextRendering в false, так как false это значение по умолчанию.

Итак, почему элементы управления используют совместимый рендеринг текста по умолчанию, если значение свойства по умолчанию falseкажется странным? Ну, то Application.SetCompatibleTextRenderingDefault Метод присваивает данное значение статическому полю в классе Control, а статический конструктор класса Control инициализирует это поле true,

Итак, удаление строки Application.SetCompatibleTextRenderingDefault(false); приведет к тому, что приложение будет использовать совместимый рендеринг текста, в отличие от того, что вы думаете, основываясь на значении по умолчанию UseCompatibleTextRendering имущество.

Единственное разумное решение, которое я вижу, это просто оставить автоматически сгенерированный вызов Application.SetCompatibleTextRenderingDefault где это.

Проблема возникла в Com-Interop-DLL, которую я написал для использования в Microsoft Excel.

DLL написана на VB.NET и содержит форму, которая отображается из Excel.

Теперь приложение Excel.Application устанавливает UseCompatibleTextRendering в true по умолчанию. Поэтому все метки и кнопки формы плохо отображаются, если DLL встроена в Excel (GDI + -Graphics-Class), но совершенно прямо из любого приложения .Net-Windows.

Чтобы исправить это, мне пришлось перебрать все метки и кнопки и установить UseCompatibleTextRendering в false на Form.Load событие. Я не нашел способа использовать SetCompatibleTextRenderingDefault ни в DLL, ни в Excel.

Другие вопросы по тегам