Sne*_*hil 0 vb.net vb6-migration
此代码已从 VB6 转换为 VB.Net:
Public prvMainForm = VB6Form
If prvMainForm IsNot Nothing Then
CObj(prvMainForm).StatusBar.Panels(1) = "Initializing Folders..."
End If
Run Code Online (Sandbox Code Playgroud)
(我的代码很长,所以我刚刚添加了这个if块,它是实际发生错误的地方。)
在 If 语句中的单行上可以看到错误:
属性“项目”是“只读”
StatusBar.Panels(1)返回一个MSComctlLib.Panel.
StatusBar.Panels(1) = "Initializing Folders..."由于默认属性,在 VB6 中有效。
VB.NET 中的默认属性必须有参数。无参数属性不能是默认值,因此不能省略。因此,.Panels(1) = "..."通过VB.NET理解为试图更换整个Panel的Panels属性,这是不允许的。
您可以在 VB6 对象浏览器中查找默认属性的名称,结果是Property _ObjectDefault As String,因此您应该能够执行以下操作:
CObj(prvMainForm).StatusBar.Panels(1).[_ObjectDefault] = "Initializing Folders..."
Run Code Online (Sandbox Code Playgroud)
正如您所观察到的,分配Text应该做同样的事情:
CObj(prvMainForm).StatusBar.Panels(1).Text = "Initializing Folders..."
Run Code Online (Sandbox Code Playgroud)