不支持 ScaleMode
在 Visual Basic 6.0 中,ScaleMode 属性可用于更改窗体或 PictureBox 控件的坐标系,修改它的默认缇小数位数。
Visual Basic 2008 不支持多个坐标系,只支持像素。在升级过程中,坐标自动从缇转换为像素;在运行时设置 ScaleMode 属性的代码会导致编译错误,必须修改此代码。
备注
升级工具假定 ScaleMode 属性的设计时设置为缇;如果不是这样,转换将不正确,必须修复。
下一步做什么
移除设置 ScaleMode 属性的代码行。
检查基于 ScaleMode 属性的任何代码,并根据需要修改任何计算。例如,下面的代码显示如何修改一个使用英寸作为 ScaleMode 的过程。
' Visual Basic 6.0 Form1.ScaleMode = vbInches Text1.Move 2, 1
上面的过程将文本框从窗体的左上角右移 2 英寸,并下移 1 英寸。
' After upgrade to Visual Basic 2008 'UPGRADE ISSUE: Constant vbInches was not upgraded. 'UPGRADE ISSUE: Form property Form1.ScaleMode is not supported. ' The next line must be removed in order to compile. Form1.ScaleMode = vbInches ' Twips are converted to pixels, but the original inch values are used. Text1.SetBounds(VB6.TwipsToPixelsX(2), VB6.TwipsToPixelsX(1),...
升级之后,该过程将文本框右移 2 个像素,并下移 1 个像素 - 并不是所需结果。
' Modified Visual Basic 2008 code ' Removed the ScaleMode line. ' Convert the scale (1 inch = 1440 twips). Text1.SetBounds(VB6.TwipsToPixelsX(2880), VB6.TwipsToPixelsX(1440),...
通过将英寸乘以 1440,从缇转换到像素现在就得到了与原始 Visual Basic 6.0 代码同样的结果。