选项严格,listview.items.add(item .clone)重载



在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上,您不能从ObjectStringListViewItem进行隐式转换。因此,您需要使用显式强制转换。

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

可以吗?

最新更新