Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 包含表单的.NET类库中的SetCompatibleTextRenderingDefault_Vb.net_Class_Vb6 - Fatal编程技术网

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

Vb.net 包含表单的.NET类库中的SetCompatibleTextRenderingDefault,vb.net,class,vb6,Vb.net,Class,Vb6,我有一个.net类库,其中有一个调用表单的com类。 我想设置CompatibleTextRenderingDefault(false)以确保表单字体美观 如果在类构造函数中运行该命令,则会出现以下错误: 在应用程序中创建第一个IWin32Window对象之前,必须调用SetCompatibleTextRenderingDefault。 我可以/应该在哪里运行此功能?当然没有比sub New更早的地方了 提前感谢 乔恩 Edit1:为了澄清这一点,我在从.net测试工具启动类时遇到了这个错误,如

我有一个.net类库,其中有一个调用表单的com类。 我想
设置CompatibleTextRenderingDefault(false)
以确保表单字体美观

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

我可以/应该在哪里运行此功能?当然没有比sub New更早的地方了

提前感谢

乔恩

Edit1:为了澄清这一点,我在从.net测试工具启动类时遇到了这个错误,如果我从VB6应用程序调用它,我只会得到“Automation error”

Edit2:当从vb6应用程序调用时,我不能在com类中使用
SetCompatibleTextRenderingDefault
??可能是“父”应用程序需要调用此方法,而vb6应用程序不能这样做


Edit3:也许我问这个问题的方式不对!-可能问题是:如何使从vb6应用程序调用的.net类库表单中的字体看起来美观?

在创建第一个窗口之前,将其放入应用程序启动代码中。在C#下,这将是创建初始窗口的主例程。

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

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);
    }
}
public Form1()
{
初始化组件();
禁用CompatibleTextRendering(此);
}
私有静态void DisableCompatibleTextRendering(控件c)
{
var按钮=(c作为按钮库);
变量标签=(c作为标签);
如果(按钮!=null)
{
button.UseCompatibleTextRendering=false;
}
如果(标签!=null)
{
label.UseCompatibleTextRendering=false;
}
foreach(c.Controls.Cast()中的var child)
{
DisableCompatibleTextRendering(子级);
}
}

因为这是一个具有调用表单的函数的类,所以我觉得sub New是“应用程序启动代码”?这是一个老问题,但我也有同样的问题,我的文本框需要它。对于文本框,有没有办法做到这一点?thnx。