SetCompatibleTextRenderingDefault в .NET Class Library, содержащей форму - PullRequest
4 голосов
/ 18 марта 2009

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

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

Где я могу / должен запустить это? Конечно, нет более раннего места, чем саб New!

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

Jon

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

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

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

Ответы [ 2 ]

2 голосов
/ 29 марта 2009

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

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 голосов
/ 18 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...