【问题标题】:VB.net Option Strict, listview.items.add(itm.clone) OverloadVB.net Option Strict, listview.items.add(itm.clone) 重载
【发布时间】:2013-05-10 02:28:06
【问题描述】:

在 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

使用 Option Strict On 我收到以下错误:

错误 2 重载解析失败,因为无法访问“添加” 用这些参数调用: '公共可重写函数 Add(value As System.Windows.Forms.ListViewItem) As System.Windows.Forms.ListViewItem':Option Strict On 不允许 从“对象”到的隐式转换 'System.Windows.Forms.ListViewItem'。 'Public Overridable Function Add(text As String) As System.Windows.Forms.ListViewItem': Option Strict On 不允许 从“对象”到的隐式转换 '字符串'。

我可以做一个 lvMerges.Items.Add(itm) ,它不会引发错误,但是我必须从 lvCustomers 列表视图中删除它,我不想这样做。

谁能解释我如何在不关闭 Option Strict 的情况下使其正常工作?

目标是复制 ListviewItem 和所有子项。

【问题讨论】:

  • 如果您使用(ListViewItem)itm.Clone(),它会起作用吗?
  • 好的,由于某种原因,我忘记了我不是在这里使用 c#...在下面添加了正确的语法作为答案。

标签: vb.net listview listviewitem overload-resolution option-strict


【解决方案1】:

您在那里收到的错误告诉您,使用Option Strict On,您无法隐式Object 转换为StringListViewItem。所以你需要进行显式转换。

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

这行得通吗?

【讨论】:

  • 真棒 :D 乐于助人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 2019-06-01
  • 1970-01-01
相关资源
最近更新 更多