Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 无法将ListView强制转换为ListViewItem_Vb.net_Listview - Fatal编程技术网

Vb.net 无法将ListView强制转换为ListViewItem

Vb.net 无法将ListView强制转换为ListViewItem,vb.net,listview,Vb.net,Listview,我觉得这件事很荒谬。我收到一个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 Li

我觉得这件事很荒谬。我收到一个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只有一列,而其中一列有更多的列。

我已经找到了答案。你知道吗男人们不会相信这有多傻,这根本不是腐败

即使在重新生成表单并得到相同的结果后,这也毫无意义。因此我决定发布它,并查看它是否发生在已发布的版本上。但JIT调试器突然出现,并通知我该问题发生在代码“lvI_ItemChecked”中更深入的事件中:

当我第一次编写该块时,我假设listviewitem启动触发器,而不是listview本身,因此我将发送方声明为listviewitem,而实际上它是listview


现在一切都变得更有意义了。

如果我直接将ListViewItems添加到组中而不是ListView,它不会引发异常,但当表单显示时,ListView中除了单列标题外什么都不会显示。我只是运行了您的代码,在那一行中没有出现此类异常。您的项目中可能有损坏的内容。我希望建议尝试使用新表单。这行代码对我来说很好。该死,就像我担心的那样。谢谢。我刚刚恢复了一个已知的旧版本,重新构建了表单,重新添加了代码,还有同样的问题。我甚至将其简化为只初始化新的ListViewItem,然后添加它而不带任何参数。我在项目中的其他表单使用相同类型的代码,这很好。
Private Sub lvI_ItemChecked(lvI As ListViewItem, e As ItemCheckedEventArgs) Handles ListViewLeaveTypes.ItemChecked

    changesMade = True
    ButtonSave.Enabled = True

End Sub