加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 07:12:48 所属栏目:百科 来源:网络整理
导读:我有一个带有调用表单的com类的.net类库. 我想要SetCompatibleTextRenderingDefault(false)以确保表单字体看起来不错. 如果我在类构造函数中运行该命令,则会收到以下错误: 必须在应用程序中创建第一个IWin32Window对象之前调用SetCompatibleTextRenderingDe
我有一个带有调用表单的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);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读