【问题标题】:ColorConstants in VB6 to VB.netVB6 到 VB.net 中的颜色常量
【发布时间】:2014-07-18 16:07:17
【问题描述】:

我正在将 VB6 ActiveX Dll 转换为 VB.net。为了支持旧系统,我需要 COM 接口以与更新前相同的方式运行。

我有两个实例,其中 VB6 ColorConstant 作为 VB6 中的属性来回传递。

VB6

Public Property Let ProgressBarColor(color As ColorConstants)
  userform.ProgressBarColor = color
End Property

Public Property Get ProgressBarColor() As ColorConstants
  ProgressBarColor = userform.ProgressBarColor
End Property

这是我在 .Net 中的内容

VB.NET

Public Property ProgressBarColor() As Long
  Get
    userform.ProgressBarColor
  End Get
  Set(ByVal Value As Long)
     ProgressBarColor = System.Drawing.ColorTranslator.FromOle(Value)
  End Set
End Property

有没有办法让 VB.Net 将其作为颜色常数处理?

【问题讨论】:

  • 你试过用System.Drawing.Color 常量代替颜色常量吗?

标签: vb.net vb6


【解决方案1】:

在 VB6 中,颜色表示为 Long,而在 VB.NET 中,颜色表示为 Structure。

Source

在 Visual Basic 6.0 中,颜色由 Long 类型的值表示; 在 Visual Basic 2008 中,颜色属于 Color 类型。在 Visual Basic 6.0 中, 为八种标准颜色提供了常数;在 Visual Basic 中 2008年有100多种命名颜色。

提示

查找 Visual Basic 6.0 颜色的等效值 不是标准颜色,您可以使用 ColorTranslator 类并通过 它是 Visual Basic 6.0 颜色的 Long 值。

颜色常数

在 Visual Basic 6.0 中,为系统颜色提供了常量 可用于将颜色映射到用户的系统偏好。在 Visual Basic 2008,系统颜色的类型为 SystemColors。

要在功能上保持落后,您必须继续将颜色作为 Long 传递,更改您的代码以使用 ColorTranslator 类,如下所示:

Public Property ProgressBarColor() As Int32
  Get
    Return System.Drawing.ColorTranslator.ToOle(userform.ProgressBarColor)
  End Get
  Set(ByVal value As Int32)
     userform.ProgressBarColor = System.Drawing.ColorTranslator.FromOle(value)
  End Set
End Property

【讨论】:

  • 在 VB.Net 中 long 是 64 位,但在 VB6 中 Long 是 32 位。您确定这不应该使用IntegerInt32 而不是Long
猜你喜欢
  • 2016-08-09
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
相关资源
最近更新 更多