Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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
C# 替换过时的VisualBasic.Compatibility.VB6.Support_C#_Vb6_.net 4.0 - Fatal编程技术网

C# 替换过时的VisualBasic.Compatibility.VB6.Support

C# 替换过时的VisualBasic.Compatibility.VB6.Support,c#,vb6,.net-4.0,C#,Vb6,.net 4.0,我们最近将一个旧的VB6 windows应用程序升级到了C#.NET 4.0。我希望替换对Microsoft.VisualBasic.Compatibility.VB6.Support类的引用,因为Visual Basic 2010警告我“Microsoft.VisualBasic.Compatibility.*类已过时,仅在32位进程中受支持。” 本文向我保证:“兼容性名称空间中的函数是为了解决.NETFramework版本1.0中的缺陷而创建的。在大多数情况下,在以后的框架版本中添加的功能可

我们最近将一个旧的VB6 windows应用程序升级到了C#.NET 4.0。我希望替换对Microsoft.VisualBasic.Compatibility.VB6.Support类的引用,因为Visual Basic 2010警告我“Microsoft.VisualBasic.Compatibility.*类已过时,仅在32位进程中受支持。”

本文向我保证:“兼容性名称空间中的函数是为了解决.NETFramework版本1.0中的缺陷而创建的。在大多数情况下,在以后的框架版本中添加的功能可用于重写这些功能,从而提高性能。”


我的问题是,我需要在以后的框架版本中添加哪些内容来消除兼容性。*类?我需要逐步淘汰TwipsToPixelX、TwipsTopixel等等。此外,FontChangeUnderline、FontChangeSize和其他与字体相关的内容

您可以通过编写
新字体(oldFont,FontStyle.Underline)
新字体(oldFont,12)

Twips不再需要。现在可以简单地使用原始像素进行标注


至于字体,请查看。

字体相关功能可以很容易地替换。例如:

Function FontChangeBold(f As Font, bold As Boolean) As Font
    Dim alreadySet = (f.Style And FontStyle.Bold) = FontStyle.Bold
    If bold = alreadySet Then Return f
    If bold Then Return New Font(f, f.Style Or FontStyle.Bold)
    Return New Font(f, f.Style And Not FontStyle.Bold)
End Function

这将检查是否已设置所需的样式。如果是,则返回旧字体。否则,它将返回具有相同样式的新字体,除了现在根据需要设置的
粗体
样式。

谢谢大家的帮助。下面是我在处理twips到像素的转换时所做的

    private const float TWIPS_PER_INCH = 1440f;
    private static Form _form = new Form();
    private static Graphics _graphics = _form.CreateGraphics();

    public static float TwipsPerPixelX()
    {
        return TWIPS_PER_INCH/_graphics.DpiX;
    }

    public static double TwipsToPixelsY(double twips)
    {
        float dpiy = _graphics.DpiY;
        return twips * dpiy / TWIPS_PER_INCH;
    }

    public static double TwipsToPixelsX(double twips)
    {
        float dpix = _graphics.DpiX;
        return twips * dpix / TWIPS_PER_INCH;
    }

    public static double PixelsToTwipsY(double pixels)
    {
        float dpiy = _graphics.DpiY;
        return pixels * TWIPS_PER_INCH / dpiy;
    }

    public static double PixelsToTwipsX(double pixels)
    {
        float dpix = _graphics.DpiX;
        return pixels * TWIPS_PER_INCH / dpix;
    }

希望有人觉得这个有趣和/或有用

对于VB的家伙来说,这对我来说很有用,能够切换粗体、斜体和/或下划线

Private Function SetNewFont(ByRef f As Font, Optional ByVal bToggleBold As Boolean = False, Optional ByVal bToggleItalics As Boolean = False, Optional ByVal bToggleUnderLine As Boolean = False) As Font

    Dim fs As FontStyle

    If bToggleBold = True Then
        If f.Bold = False Then
            fs = FontStyle.Bold
        End If
    Else
        If f.Bold = True Then
            fs = FontStyle.Bold
        End If
    End If

    If bToggleItalics = True Then
        If f.Italic = False Then
            fs += FontStyle.Italic
        End If
    Else
        If f.Italic = True Then
            fs += FontStyle.Italic
        End If
    End If

    If bToggleUnderLine = True Then
        If f.Underline = False Then
            fs += FontStyle.Underline
        End If
    Else
        If f.Underline = True Then
            fs += FontStyle.Underline
        End If
    End If

    Return New Font(f, fs)

End Function

.NET不再使用twips。重写你的程序,改为依赖像素,你应该会没事的。我需要的是一种可靠的方法,将旧twips值从传统应用程序转换为像素。对于大多数设备来说,这很简单:像素*15=twips。然而,并非所有设备都是如此。这个VisualBasic.Compatibility类有进行这种转换的方法;我需要在C#中重新执行这些方法,并删除对VisualBasic.Compatibility的依赖。乘数是1440除以Graphics.DpiX/Y属性值。@Booberyy你救了我的命!