这段代码从VB6转换为 VB.Net:
Public prvMainForm = VB6Form
If prvMainForm IsNot Nothing Then
CObj(prvMainForm).StatusBar.Panels(1) = "Initializing Folders..."
End If
(我的代码很长,所以我刚刚添加了这个if
块,这是实际错误发生的地方。
错误显示在 If 语句内的单行上:
属性"项"为"只读">
StatusBar.Panels(1)
返回一个MSComctlLib.Panel
。
由于默认属性,StatusBar.Panels(1) = "Initializing Folders..."
在 VB6 中有效。
VB.NET 中的默认属性必须具有参数。无参数属性不能是默认值,因此不能省略。因此,VB.NET 将.Panels(1) = "..."
理解为试图替换Panels
属性中的整个Panel
,这是不允许的。
您可以在 VB6 对象浏览器中查找默认属性的名称,结果是Property _ObjectDefault As String
,因此您应该能够执行以下操作:
CObj(prvMainForm).StatusBar.Panels(1).[_ObjectDefault] = "Initializing Folders..."
正如您所观察到的,分配Text
也应该这样做:
CObj(prvMainForm).StatusBar.Panels(1).Text = "Initializing Folders..."