보통은 이미 다른 자식이라고 뜨는데 어떤경우에는 값이 범위를 벗어났다고 뜹니다.
차일드로 지정한녀석을 다시 지정하려고 할때 나는 오류인데 말이죠-_-;
보통 이렇게 뜨는게 맞습니다.
그런데 이렇게 뜨죠.
원인은 "이미 다른자식입니다"와 같습니다.
그렇기 때문에 이미 다른곳에 소속인 객체를 해당 소속에서 지워 주면됩니다.
//컨트롤 배열 생성
this.btnTest = new Button[10];
//컨트롤 초기화
for (int i = 0; i < 10; ++i)
{
this.btnTest[i] = new Button();
}
this.btnTemp = this.btnTest[0];
this.gridTemp1.Children.Add(this.btnTemp);
this.gridTemp2.Children.Add(this.btnTest[1]);
//옮길 객체를 가져온다.
Button btnMyTemp = this.gridTemp1.Children[0] as Button;
if (null != btnMyTemp)
{
//해당 객체를 기존 소속에서 지워준다.
this.gridTemp1.Children.Remove(btnMyTemp);
}
this.gridTemp2.Children[0] = btnMyTemp;
Remove로 객체를 지우면 되죠.
보통 레이아웃상에서 같은 객체를 추가하면 자동으로 기존 객체가 지워지는데 다른 레이아웃으로 옮길때는 자동으로 지워주지 않는것 같습니다 -_-;;
(엄밀이 말해 객체는 주소만 전달해 주기 때문에 기존객체가 자동으로 지워지는 것이 아닙니다. 기존객체가 이동하는 것이죠.)