设置默认属性失败,因为它是只读的?



这段代码从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..."

相关内容

最新更新