[C#] 동적 폼 컨트롤


Answers

FlowLayoutPanelTableLayoutPanel 과 같은 자동 레이아웃이있는 패널을 사용할 수 있습니다.

불행히도 자동 레이아웃이있는 패널은 2 개 밖에 없지만 사용자 정의 레이아웃 패널을 만들 수 있습니다.

다음 기사를 읽으시기 바랍니다.

방법 : 데이터 입력을 위해 크기를 조정할 수있는 Windows Form 만들기

연습 : 데이터 입력을 위해 크기를 조정할 수있는 Windows Form 만들기

또 다른 옵션은 WPF (Windows Presentation Presentation)를 사용하는 것입니다.
WPF는 작업에 가장 적합합니다.
WPF 컨트롤은 WinForms 앱에서 호스팅 될 수 있으므로 완전히 전환 할 필요가 없습니다.

Question

C # 2.0을 사용하면 동적 폼 컨트롤을 구현하는 가장 좋은 방법은 무엇입니까?

데이터 객체 당 컨트롤 집합을 제공해야하므로 수동으로 수행하고 값을 늘리거나 더 좋은 방법을 사용하면서 레이아웃해야합니다.




우리가 프로젝트에서 지금하고있는 방식입니다. 그러나 이것은 단순한 경우에만 유용합니다. 좀 더 복잡한 경우에는 템플릿을 사용하는 것이 좋습니다.

예를 들어 Reflection을 사용하여 특정 유형의 컨트롤을 이전 프로젝트의 내 도메인 개체에있는 특정 속성에 매핑합니다.

t4를 사용하여 템플릿에서 코드를 생성 해 볼 수 있습니다 . Visual Studio의 T4 템플릿에서 간단한 예제 코드 생성 Screencast 를 참조하십시오. 이것을 WinForms에 적용 할 수 있습니다.

또한 DevExperience에는 좋은 (값 비싼) 프레임 워크가 있습니다. DevExpress eXpressApp Framework ™를 참조하십시오.




"다이내믹"이란 무엇을 의미합니까? 데이터 세트의 각 데이터 행에 대한 새로운 고정 된 컨트롤 세트? 그런 다음 컨트롤이 포함 된 UserControl 을 사용하십시오.

또는 데이터 레이아웃에 따라 사용자에게 사용자 정의 된 컨트롤 세트, 즉 각 열에 대해 하나의 TextBox 를 제공하고 싶습니까?




@Sam 나는이 질문이 Windows Forms에 관한 것이었지만 확실히 WPF를 살펴보아야합니다. 이러한 종류의 시나리오는 DataTemplates 및 TemplateSelectors를 사용하는 WPF에서 매우 쉽습니다.




그래, 수동으로 레이아웃 컨트롤을 찾았어요 (컨트롤의 높이에 따라 Top 속성을 늘리면서 내가봤을 때 마진) 합리적으로 효과적이었습니다.

또 다른 방법은 Dock이있는 패널에 컨트롤을 배치하여 각 연속 패널이 위의 패널에 고정되도록하는 것입니다. 그런 다음 개별 패널의 가시성을 전환 할 수 있으며 사용 가능한 공간을 채우기 위해 아래의 컨트롤이 스냅됩니다. 도킹 된 숨겨진 패널을 표시하면 다른 도킹 된 컨트롤과 관련하여 위치가 변경 될 수 있음을 알면 약간의 예측이 불가능할 수 있습니다.