vb.net - 无法将 ListView 转换为 ListViewItem
问题描述
这对我来说似乎很荒谬。我收到了一个 InvalidCastException,其中“无法将 'System.Windows.Forms.ListView' 类型的对象转换为在下面的星号行上键入 'System.Windows.Forms.ListViewItem':
Public Class FormX
Public DT As DataTable
Public trnBool As Boolean
Dim lV As ListView
Dim trnLVI As ListViewItem
Dim PClviList As List(Of ListViewItem)
Private Sub FormAllocationsLeaveTypes_Load(sender As Object, e As EventArgs) Handles Me.Load
lV = ListViewLT
lV.Items.Clear()
lV.Groups.Clear()
Dim lvGS As ListViewGroup, lvGP As ListViewGroup, lvI As ListViewItem
lvGS = New ListViewGroup("Shift Type", HorizontalAlignment.Left)
lvGP = New ListViewGroup("PC Types", HorizontalAlignment.Left)
lV.Groups.AddRange({lvGS, lvGP})
trnLVI = New ListViewItem("Training Shifts") With {.Checked = trnBool}
lV.Items.Add(trnLVI).Group = lvGS '*** Exception occurs here
PClviList = New List(Of ListViewItem)
For Each LT As DataRow In DT.Rows
lvI = New ListViewItem(LT("HrsType").ToString) With {.Checked = Not LT("Show").ToString = String.Empty}
lV.Items.Add(lvI).Group = lvGP
PClviList.Add(lvI)
Next LT
End Sub
End Class
异常使它看起来像是在说我的变量 trnLVI 是 ListView 类型。我什至在即时窗口中检查了 trnLVI.GetType.Name,它返回了 ListViewItem。
我试过前后分配组,没有区别。我也有几乎相同的语法在同一个项目的另一种形式中执行相同的操作,使用我复制的 ListView 来制作这个。唯一真正的区别是这个 ListView 只有 1 列,而该列有更多。
解决方案
我已经想通了。你们不会相信这是多么愚蠢。这根本不是腐败。
即使在重建表单并获得相同的结果之后,它也没有任何意义。所以我决定发布它,看看它是否发生在发布的版本上。但是 JIT 调试器弹出并告诉我问题发生在我在代码“lvI_ItemChecked”中更进一步的事件中:
Private Sub lvI_ItemChecked(lvI As ListViewItem, e As ItemCheckedEventArgs) Handles ListViewLeaveTypes.ItemChecked
changesMade = True
ButtonSave.Enabled = True
End Sub
当我第一次编写该块时,我假设 listviewitem 启动触发器,而不是 listview 本身,所以我将发送者声明为 ListViewItem,而它实际上是一个 ListView。
现在这一切都变得更有意义了。
推荐阅读
- jmeter - 在 Jmeter 中参数化 JDBC 调用
- python - 用修改后的 .copy() 行替换原始 DataFrame 的行:将 .copy() 结果与原始 DataFrame 合并
- java - 录制视频时显示类似 Whatsapp 的键盘
- sap-cloud-sdk - SecurityContext.getUserInfo() 在本地主机上不起作用
- r - 如何根据不断变化的唯一值对 R 中的向量进行顺序编号?
- laravel - 如何使用父枢轴值作为条件获得雄辩的关系
- lisp - Lisp 中的“*** - EVAL:未定义的函数 X”
- python - 将 31 个数据框的嵌套列表转换为 31 个单独的数据框的最简单方法
- java - 使用 Spring JPA 锁定 DB2 直到 INSERT
- sql - 如何返回每个 SKU 的最新 LogTime