2014-12-14 12 views
0

캔버스에 usercontrol을 추가하려고 할 때이 오류가 발생합니다. firslty 그리드의 모든 usercotrol이 메도 통해 삭제의 선택은 다음 변경 콤보가 : 그 새 같은 usercontorls를 추가 할 후지정된 요소는 이미 다른 요소의 논리적 하위입니다.

 Dim childToDelete As New List(Of UIElement) 
    For Each a As UIElement In gridimgFloor.Children 
     childToDelete.Add(a) 
    Next 

    For Each c As UIElement In childToDelete 
     gridimgFloor.Children.Remove(c) 
    Next 

은. 하지만 난이 오류가 발생했습니다 :

Specified element is already the logical child of another element. Disconnect it first. 

이 코드를 통해 컨트롤을 추가하고 :

  selectedFloorDevices = f.GetDevies 
    For Each d As DeviceIcon In selectedFloorDevices 
     Dim a As DeviceIcon = d 
     'Dim a As New DeviceIcon 
     Dim gr As New Canvas 

     a.Rectangle.Height = f.GetDeviceScale 
     a.Rectangle.Width = f.GetDeviceScale * 2 

     gr.Children.Add(a) 
     gridimgfloor.add(gr) 
    Next 

는이 라인에 오류가 있습니다 :

 gr.Children.Add(a) 

무슨 문제? 나는 지난 3 일까지 strugling하고있다. 그러나 아무것도 얻지 않았다. 도와주세요.

+0

f.GetDevies. f 란 무엇입니까? – user1064519

+0

f는 DeviceIcon의 목록을 반환하는 클래스입니다. –

+0

VB에 익숙하지 않지만 VisualTree의 모든 요소는 기본적으로 고유하므로 두 번 같은 객체를 삽입 할 수 없습니다. – Maximus

답변

0

다음과 같은 사용된다 : 한 다음은 참조 형식임을 기억 D와 동일하도록 설정된다

For Each d As DeviceIcon In selectedFloorDevices 
    Dim a As DeviceIcon = d 

, A가 D의 복사본 아니라, D이다.

아래 줄 올 :

Dim a As New DeviceIcon