如何将Timer.Enabled转换为Control类型

时间:2018-02-12 16:56:20

标签: vb.net vb6

将代码从VB6转换为VB.NET后,我得到了以下结果代码:

设计师表单代码:

Public WithEvents Timer1 As Microsoft.VisualBasic.Compatibility.VB6.TimerArray
Me.Timer1 = New Microsoft.VisualBasic.Compatibility.VB6.TimerArray(components)

代码实施:

Private Function GetBaseControl(ByRef a_type As String) As System.Windows.Forms.Control Implements GetBaseControl

Select Case a_type

Case "Web"
        GetBaseControl = ctBrowser1(0)
Case "Timer"
        GetBaseControl = Timer1(0)

End Select
End Function

这是我收到的错误:

  

类型'Boolean'的值无法在行GetBaseControl = Timer1(0)转换为'System.Windows.Forms.Control'。

在VB6中运行良好虽然!!

1 个答案:

答案 0 :(得分:1)

如果这在VB6中有效,那么代码遵循一些非常糟糕的做法来返回布尔Enabled而不是实际的Timer组件。它至少意味着Option Strict已关闭,而且非常糟糕。

在这种情况下,.Net中的Timers不再被视为控件。相反,它们是Components。您将需要重新思考此代码的功能。如何使用代码的示例可能让我们推荐一种不同的(更好的)方法来解决问题。

在这种情况下,我怀疑重新考虑使用重载方法(这对于vb6而言不是惯用的)会产生更好的结果,特别是在保持类型安全而不是传递字符串方面。

注意:在第二天编辑问题之前,这个答案更有意义