在VB.net(2012)我有以下代码:
For Each itm As ListViewItem In Me.lvCustomers
If CDbl(itm.Tag) <> customer.Id Then Me.lvMerges.Items.Add(itm.Clone)
Next
与选项严格在我得到以下错误:
错误2超载解析失败,因为没有可访问的'Add'用这些参数调用:` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `System.Windows.Forms。ListViewItem':选项严格禁用从'Object'到"System.Windows.Forms.ListViewItem"。公共可重写函数添加(文本作为字符串)为System.Windows.Forms。ListViewItem':选项严格禁用从'Object'到"字符串"。
我可以做一个lvmerge . items . add (itm),它不会抛出一个错误,但然后我必须从lvCustomers列表视图中删除它,这是我不想做的。
有人能解释我如何能使这个工作正常而不关闭选项严格?
目标是复制ListviewItem和所有子项。
您收到的错误告诉您,在Option Strict On
上,您不能从Object
到String
或ListViewItem
进行隐式转换。因此,您需要使用显式强制转换。
For Each itm As ListViewItem In Me.lvCustomers
If CDbl(DirectCast(itm.Tag, String) <> customer.Id Then Me.lvMerges.Items.Add(DirectCast(itm.Clone, ListViewItem))
Next
可以吗?