2009-03-18 1 views
4

У меня есть библиотека класса .net с классом com, который вызывает форму. Я хочу, чтобы SetCompatibleTextRenderingDefault(false), чтобы форма шрифтов выглядела красиво.SetCompatibleTextRenderingDefault в библиотеке классов .NET, содержащей форму

Если я запускаю команду в конструкторе класса я получаю следующее сообщение об ошибке: SetCompatibleTextRenderingDefault must be called before the first IWin32Window object is created in the application.

Где можно/нужно запустить это? Наверняка нет более раннего места, чем под Новый!

Спасибо заранее

Jon

Edit1: Для того, чтобы уточнить, я получаю эту ошибку при инициализации класса из тестового .net жгута, если я называю это из приложения VB6, то я просто получить «Автоматизацию Ошибка "

Редактировать 2: Ответ, который я не могу использовать SetCompatibleTextRenderingDefault в классе com при вызове из приложения vb6? Может быть, это «родительское» приложение, которое должно вызвать этот метод, и как таковое приложение vb6 не может?

Редактировать3: Возможно, я задаю этот вопрос не так! - Возможно, вопрос в следующем: как я могу заставить шрифты выглядеть красиво в форме библиотеки классов .net, вызванной из приложения vb6?

ответ

2

Возможный обходной путь будет установить свойство вручную на всех кнопок и меток в виде конструктора:

public Form1() 
{ 
    InitializeComponent(); 
    DisableCompatibleTextRendering(this); 
} 

private static void DisableCompatibleTextRendering(Control c) 
{ 
    var button = (c as ButtonBase); 
    var label = (c as Label); 

    if (button != null) 
    { 
     button.UseCompatibleTextRendering = false; 
    } 

    if (label != null) 
    { 
     label.UseCompatibleTextRendering = false; 
    } 

    foreach (var child in c.Controls.Cast<Control>()) 
    { 
     DisableCompatibleTextRendering(child); 
    } 
} 
+0

Я сделаю это так ... спасибо за ваш ответ :) – wheelibin

+0

Это старый вопрос, но у меня такая же проблема, и мне это нужно для моих текстовых полей. Есть ли способ сделать это для текстового поля? Thnx. – ibram

0

Поместите это в код запуска приложения до создания первого окна. В C# это будет основная процедура, которая затем создает начальное окно.

+0

Поскольку это класс, который имеет функцию призывающую форму, тогда я был под впечатлением, что sub Новый - это «код запуска приложения»? – wheelibin

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

  • Нет связанных вопросов^_^