github에서 소스를 분석해보려고 다운을 받았는데 윈폼 UI를 짤 때, 특별히 코드로 UI를 다 짜는 이유가 있을까요?

제가 공부를 위해서 Github에서 C#프로그램을 다운 받아 분석하고 있는데
UI를 다 코드로 만들었더라구요.

선배님 혹시 특별히 이렇게 코드로 짜는 이유가 있을까요?

답변 부탁드리겠습니다.

이상입니다.

2개의 좋아요

반갑습니다.

  1. 버젼관리 시스템과 궁합이 맞지 않음
    먼저 윈폼 디자이너가 SVN이나 Git등 버젼관리 시스템과 궁합이 잘 안맞습니다.

혼자서 개발할 때는 딱히 문제될 것은 없으나 협업 시 윈폼 디자이너에 의해 자동 생성된 코드가 다른 분의 소스와 충돌이 빈번히 일어나 매우 번거롭습니다.

  1. 좀 더 화면 구성을 통제할 수 있음
    디자이너를 이용하면 위지윅으로 빠르게 화면구성을 할 수 있다는 장점이 있으나 세밀한 조정은 되려 코드로 전개하는게 효율적이기도 합니다.

제가 말씀드릴 수 있는 이유가 위의 두가지 정도인데요, 사실, 두번째는 Dock이나 Anchor로 컨트롤들을 잘 조합하면 디자이너 화면에서도 충분히 세밀한 구성이 가능하므로 첫번째 이유가 가장 크다고 할 수 있겠네요.

7개의 좋아요

한 가지 더 덧붙이면, Windows Forms의 경우 요즈음 기본으로 사용하는 High DPI 지원에 매우 취약합니다. 디자인 타임으로 작업할 경우, 디자이너를 어떤 DPI에서 열어서 작업했는 가에 따라 나중에 다른 DPI를 사용하는 모니터, 혹은 작업자 컴퓨터에서 열었을 경우 화면 레이아웃이 심하게 깨질 수 있습니다.

이런 문제를 완화하기 위해 Visual Studio를 판올림하면서 많은 개선이 이루어졌지만, 완전하지는 않습니다. 그래서 이런 문제를 처음부터 회피하기 위해 코드로만 Windows Forms UI를 작성하는 것을 택하는 사례가 실제로도 많습니다.

그리고 코드로만 Windows Forms UI를 작성하면서는 좌표를 기반으로 계산하는 것이 너무나 어렵습니다. 그래서 TableLayoutPanel 같은 .NET Framework 2.0 이후 추가된 새로운 레이아웃 컨트롤을 적극적으로 활용하는 것을 주로 보실 수 있을 겁니다.

더 나아가서, Windows Forms로 이런 가변 레이아웃을 고민하게 된다면 자연히 WPF의 유연한 레이아웃 시스템을 동일 선상에 놓고 보기 시작하게 될 것입니다.

Windows Forms의 경우 가변 레이아웃을 컨테이너 컨트롤을 이용해서 지원할 수는 있지만, 모든 그리기 로직을 WM_PAINT 메시지를 통해서 그리려고 하기 때문에, 그래픽 가속기의 도움도 받을 수 없고, 속도도 느립니다. 반면, WPF를 사용하면 High DPI에도 유연하게 대처할 수 있을 뿐 아니라 그래픽 가속기의 능력을 충분히 활용할 수 있습니다.

그럼에도 Windows Forms를 사용하는 이유는, WPF가 Windows OS의 시스템 컨트롤을 완전히 지원하는 것이 아니다보니 Windows Forms에서 누릴 수 있던 생산성 면에서의 이점을 WPF가 대체하지 못하는 사례도 있기 때문입니다. 그래서 어느쪽이 정답이라고 확답을 내리기는 어렵지만, 대개는 WPF가 권장됩니다.

11개의 좋아요

저는 Winform말고 WPF를 사용하지만, 코드로 짜는것을 배우고 사용하고있습니다.

  1. 코드로 UI를 작성했을때 좌표 계산 및 사이즈 계산이 쉽다.
  2. 세부적인 조작이 가능하다.
  3. 내가 원하는 아이템들을 찾아쓰는게아니라 바로 머리에서 꺼내 쓸수있어 속도가 향상된다.
  4. 작은 프로그램의 경우에는 꺼내써도 상관없지만 복잡한 프로그램은 꺼내쓰면 코드가 들쭉날쭉해 알아보기 힘들다.

이 정도의 장점이 있어서 코드로 사용합니다.

4개의 좋아요

너무 감사합니다.!!!

1개의 좋아요

좋은 조언 너무 감사합니다!!!

1개의 좋아요

코드로 디자인하는법을 연습해야겠습니다.

1개의 좋아요