2015년 3월 7일 토요일

C# WinForm 새로 추가한 판넬에 기존 컨트롤을 이동 시키기

폼을 디자인 하다보면 판넬이나 프레임을 만들어 그룹을 지어서 관리하는게 편리하다.

문제는 처음에는 간단한 컨트롤을 생각하고 디자인 했다가, 나중에 너무 복잡해 져서 판넬로 그룹을 만들어 관리하고 싶을때 인데...


사실 별로 어렵지 않다.


그냥, 판넬 하나 선택하고, 원하는 컨트롤이 있는 지역을 드래그 해서, 영역을 지정해 주면...


이렇게 선택된 영역이 추가된 판넬에 들어 가게 된다.
만약, 기존에 존재하는 판넬에 컨트롤을 옮겨야 한다면?



마우스로 해당 컨트롤을 선택해 직접 드래그해 넣어도 된다.
하지만, 컨트롤이 많다던가 형태가 복잡해서 하나하나 찍기가 곤란하다던가 하면, 작업할 폼의 "Designer.cs" 파일을 수정하면 된다.


"Designer.cs" 을 보면 이동하고 싶은 컨트롤들이 "this.Controls.Add()" 로 등록되어 있는 것이 보일 것이다.

이것을 원하는 컨트롤에 등록되도록 수정해 준다.


이렇게 "this.Controls" 이엇던 것을 "this.panel1.Controls" 로 바꾸어 준다.
이렇게 하면...


기존의 컨트롤이 없어진것처럼 보이지만...


이것은 해당 컨트롤의 X, Y 좌표가 메인 폼이 아닌 이동한 판넬의 좌표로 적용되었기 때문에 현재 위치가 판넬의 영역밖으로 지정되어 안보이기 때문이다.
그러니, 판넬의 크기를 키워보면, 해당 판넬에 잘 등록되어 있는 것을 볼수 있을 것이다.


이제 부터는 판넬로 해당 컨트롤들을 한꺼번에 관리 할 수 있다.