0

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' を次の引数で呼び出すことができないためです: 「オブジェクト」から「System.Windows.Forms.ListViewItem」へ。'Public Overridable Function Add(text As String) As System.Windows.Forms.ListViewItem': Option Strict On は、'Object' から 'String' への暗黙的な変換を禁止します。

エラーをスローしない lvMerges.Items.Add(itm) を実行できますが、それを lvCustomers リストビューから削除する必要がありますが、これは望ましくありません。

Option Strictをオフにせずにこれを適切に機能させる方法を誰かが説明できますか?

目標は、ListviewItem をすべての SubItem と共にコピーすることです。

4

1 に答える 1

3

そこで受け取ったエラーは、 on ではtoまたはからの暗黙的なキャストを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

それは動作しますか?

于 2013-05-10T04:31:31.217 に答える