0

(2012) 나는 다음과 같은 코드를 가지고 : 나는 다음과 같은 얻을에 엄격한 옵션과 함께VB.net 옵션 엄격한, listview.items.add (itm.clone) 과부하

For Each itm As ListViewItem In Me.lvCustomers 
    If CDbl(itm.Tag) <> customer.Id Then Me.lvMerges.Items.Add(itm.Clone) 
Next 

을 오류 :

Error 2 Overload resolution failed because no accessible 'Add' can be called with these arguments: 'Public Overridable Function Add(value As System.Windows.Forms.ListViewItem) As System.Windows.Forms.ListViewItem': Option Strict On disallows implicit conversions from 'Object' to 'System.Windows.Forms.ListViewItem'. 'Public Overridable Function Add(text As String) As System.Windows.Forms.ListViewItem': Option Strict On disallows implicit conversions from 'Object' to 'String'.

나는 오류가 발생하지 않는 lvMerges.Items.Add (ITM)를 할 수 있지만 그때 난 내가하고 싶지 않은 lvCustomers의 목록보기에서 제거해야합니다.

누군가가 내가이 작업을 제대로하지 않고 어떻게 작동하는지 설명 할 수 있습니까? 옵션이 엄격합니까?

목표는 모든 SubItem과 함께 ListviewItem을 복사하는 것입니다.

+0

'(ListViewItem) itm.Clone()'을 사용하면 작동합니까? – Adrian

+1

좋아, 웬일인지 여기에 C#이 아니란 걸 잊어 버렸어 ... 아래 답변에 맞는 구문을 추가했습니다. – Adrian

답변

3

당신에 Option Strict OnObject에서 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 

작동합니까?

+0

예 - 고마워요! – Jeff

+1

굉장한 : D 도와 줘서. – Adrian