C#/Winform

[C# Winform] Form에 Form 붙이기

우준세 2021. 12. 7. 21:07
728x90
반응형

 

 

C# 포스팅은 공부하면서 알아가는 것들을 정리하면서 썼습니다. 

Winform으로 하나씩 테스트하면서 정리한 것을 계속해서 포스팅할 예정입니다.

내용의 궁금한 점이나 잘못된 점이 있으면 댓글로 남겨주세요!


GOAL

- Winform의 Main Form에서 버튼을 눌렀을 때 해당 Form을 Main Form에 붙여서 띄우기


Form에 Form 붙이기 위한 작업 _ 1

 

 

- 테스트를 위한 버튼을 만들고 폼을 일반적으로 띄우는 형식입니다. 

- From.show()를 Btn_click 이벤트에 넣어서 사용했습니다. 하지만 이렇게 하면 다른 버튼을 누르는데 번거롭게 되며 

창을 옮기는데도 불편함이 생깁니다. 

 

 

- 먼저 FormBorderStyle을 None으로 하여 상태 표시줄을 사라지게 했습니다.

 

- ControlBox 속성을 False로 만들어 최소, 최대, 닫기 버튼을 사라지게 하였습니다.


Form에 Form 붙이기 위한 작업 _ 2

- 위 작업에서 붙일 Form의 BorderStyle과 ControlBox를 제거하였지만 붙인 것처럼 보일 뿐 

아래 사진처럼 실제로 붙은 상태는 아니게 됩니다.

 

- C#에서 Form도 객체를 만들고 상속받으므로 다른 컨트롤 안에 포함시킬 수 있습니다. 이 말은 main form 안에 포함시킬 수 있다는 뜻입니다.  

- Form의 속성 중 TopLevel이라는 속성이 있습니다. TopLevel을 True로 설정하면 부모 창이 없는 최상위 창으로 만든다는 의미이고 통상 메인 창으로 사용합니다. default는 True이며 저는 붙이기 위해 false로 지정했습니다. 

private void FrmMAIN_Load(object sender, EventArgs e)
{
  frmpGridINI.TopLevel = false;

  this.Controls.Add(frmpGridINI);

  frmpGridINI.StartPosition = FormStartPosition.Manual;
  frmpGridINI.Location = new Point(15, 60);
}

 

- 코드를 보시면 pGridINI.TopLevel = fasle로 만들고 this.Controls.Add() 즉, 메인의 컨트롤에 자식 폼을 추가함으로 폼을 붙일 수 있게 됩니다. 그리고 자식 폼의 startPosition을 manual로 만들어 원하는 곳에서 시작되게 할 수 있습니다.

 

결과) 

 

- 만들 결과를 보시면 main에 자식 폼이 붙어서 데이터를 주고받는 것을 볼 수 있습니다. 

 

 

틀린 점이나 질문이 있으시면 댓글로 남겨주세요! 

 

 

 

728x90
반응형