2015-01-30 2 views
0

내 프로그램에서 숫자, 즉 25를 입력하라는 메시지를 표시합니다. 그러면 프로그램은 25 개의 컨트롤 (텍스트 상자)을 사용하여 "기본 폼"을 시작합니다. 25 개 (또는 모든 숫자)의 텍스트 상자 (또는 어떤 컨트롤이든)를 균등하게 형식화해야합니다. 또한 텍스트를 검색 할 수 있어야합니다 (또는 다른 컨트롤을 사용하는 경우에는 다른 속성), 왼쪽에서 오른쪽으로, 위에서 아래로 순서대로 검색 할 수 있어야합니다. 이것에 접근하는 가장 좋은 방법은 무엇입니까?"동적"컨트롤을 추가하는 가장 좋은 방법은 무엇입니까?

+2

WPF를 사용할 수있는 경우 템플릿/MVVM을 다시 시작하고 사용하십시오. 그게 * 최고의 * 방법. – BradleyDotNET

+0

좀 더 자세하게 들어갈 수 있습니까? WPF가 크로스 플랫폼이 될 수 있습니까? 주로 OSX? –

+0

WinForms에서 사용자 입력에 따라 필요한 행을 가진 TablelayooutPanel을 추가하고 각 행 안에 텍스트 상자를 추가하십시오. –

답변

2

WPF MVVM 사용. .XAML 파일에서 TextBox에 대한 바인딩을 제공하는 ViewModel의 DataType을 사용하여 DataTemplate을 만들고이 번호를 TextboxViewModel라고합니다. 그런 다음 ItemsSourceItemsControl이고 TextboxViewModel 인 요소를 사용하십시오. TextBox을 원하는만큼 인스턴스화하고 TextboxViewModel 목록을 탐색하여 결과를 얻을 수 있습니다.

+0

WPF를 OSX로 이식 할 수 있습니까? –

+1

마이크로 소프트는 올해 다른 OS에 플랫폼을 공개했지만 OSX 용 C# 프로그래밍을 시작하는 것은 조금 이르다고 말하고 싶습니다. OSX를 타겟으로하는 툴킷이나 QT와 같은 크로스 플랫폼 패밀리를 사용하십시오. –

+1

WPF는 Mono에서 지원하지 않았으며 OSX에서는 쉽게 사용할 수 없습니다. http://www.mono-project.com/docs/gui/wpf/ – David

0

여기서 Windows Forms를 사용한다고 가정하십시오. 동적으로 X 컨트롤을 만들고 폼의 Controls 컬렉션에 추가합니다. 그들에 대한 액세스를 용이하게하기 위해 List에 참조를 저장하고 필요에 따라 일부 이벤트 핸들러를 설정할 수 있습니다. 당신이 그들을 추가하는 동안 당신은 단지 그들의 위치를 ​​계산해야합니다.

0

WinForms 인 경우 정확히 FlowLayoutPanel이 대상입니다. 컨트롤을 추가하면 필요에 따라 다음 행으로 자동 줄 바꿈됩니다. 미하이 (Mihai)가 이미 제안했듯이, 목록에있는 컨트롤에 대한 참조를 유지할 수도 있습니다.

또 다른 옵션은 TableLayoutPanel을 사용하는 것입니다. 배우고 사용하기가 조금 더 어렵지만 훨씬 더 유연하고 강력합니다.

관련 문제