vb.net - 设置默认属性失败,因为它是只读的?
问题描述
此代码已从 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 中的默认属性必须有参数。无参数属性不能是默认的,因此不能省略。因此,.Panels(1) = "..."
VB.NET 将其理解为尝试替换整个Panel
属性Panels
,这是不允许的。
您可以在 VB6 对象浏览器中查找默认属性的名称,结果是Property _ObjectDefault As String
,因此您应该能够:
CObj(prvMainForm).StatusBar.Panels(1).[_ObjectDefault] = "Initializing Folders..."
正如您所观察到的,分配Text
应该做同样的事情:
CObj(prvMainForm).StatusBar.Panels(1).Text = "Initializing Folders..."
推荐阅读
- c++ - 如何使用 OpenSSL 而不是 BoringSSL 构建 gRPC++
- asp.net-core - 无法通过 IIS 为网站提供主机名
- javascript - 使用将函数作为模式的 redux-saga-test-plan 进行断言会给出“效果不匹配”错误
- c++ - “cin”怎么会弄乱一个循环?
- java - TextView 中的可点击字符串到 EditText insinde Adapter.class
- javascript - JavaScript 确认取消按钮仍在发布
- typescript - “AngularFireAuth”类型上不存在属性“createUserWithEmailAndPassword”
- javascript - 是否有任何方法可以使用 Promise.all 中断承诺数组的并行执行
- image - Webpack 对图像的编译时间很慢
- ionic-framework - 如何在ionic4中获取来电号码?