프로그래밍/WPF, Silverlight
[WPF/Silverlight] 기존 레이아웃에서 다른 레이아웃으로 객체를 옮기려고 할때 나는 에러
당근천국
2011. 11. 22. 01:45
보통은 이미 다른 자식이라고 뜨는데 어떤경우에는 값이 범위를 벗어났다고 뜹니다.
차일드로 지정한녀석을 다시 지정하려고 할때 나는 오류인데 말이죠-_-;
보통 이렇게 뜨는게 맞습니다.
그런데 이렇게 뜨죠.
원인은 "이미 다른자식입니다"와 같습니다.
그렇기 때문에 이미 다른곳에 소속인 객체를 해당 소속에서 지워 주면됩니다.
Remove로 객체를 지우면 되죠.
보통 레이아웃상에서 같은 객체를 추가하면 자동으로 기존 객체가 지워지는데 다른 레이아웃으로 옮길때는 자동으로 지워주지 않는것 같습니다 -_-;;
(엄밀이 말해 객체는 주소만 전달해 주기 때문에 기존객체가 자동으로 지워지는 것이 아닙니다. 기존객체가 이동하는 것이죠.)
차일드로 지정한녀석을 다시 지정하려고 할때 나는 오류인데 말이죠-_-;
보통 이렇게 뜨는게 맞습니다.
그런데 이렇게 뜨죠.
원인은 "이미 다른자식입니다"와 같습니다.
그렇기 때문에 이미 다른곳에 소속인 객체를 해당 소속에서 지워 주면됩니다.
//컨트롤 배열 생성 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로 객체를 지우면 되죠.
보통 레이아웃상에서 같은 객체를 추가하면 자동으로 기존 객체가 지워지는데 다른 레이아웃으로 옮길때는 자동으로 지워주지 않는것 같습니다 -_-;;
(엄밀이 말해 객체는 주소만 전달해 주기 때문에 기존객체가 자동으로 지워지는 것이 아닙니다. 기존객체가 이동하는 것이죠.)