vb.net – 包含表单的.NET类库中的SetCompatibleTextRenderingDefault

我有一个带有调用表单的com类的.net类库.

我想要SetCompatibleTextRenderingDefault(false)以确保表单字体看起来不错.

如果我在类构造函数中运行该命令,则会收到以下错误:
必须在应用程序中创建第一个IWin32Window对象之前调用SetCompatibleTextRenderingDefault.

我可以/应该在哪里运行?当然没有比新的更早的地方了!

预先感谢

乔恩

编辑1:为了澄清,我从.net测试工具启动类时遇到此错误,如果我从VB6应用程序调用它然后我只是得到“自动化错误”

Edit2:从vb6应用程序调用时,我不能在com类中使用SetCompatibleTextRenderingDefault的答案吗?也许这是需要调用此方法的“父”应用程序,因此vb6应用程序不能?

编辑3:也许我以错误的方式问这个问题! – 也许问题是:如何在从vb6 app调用的.net类库表单中使字体看起来很好?

最佳答案 一种可能的解决方法是在表单构造函数中的所有按钮和标签上手动设置属性:

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);
    }
}
点赞