2010-11-18 2 views
1

사용자가 열려고하는 파일을 선택해야하는 프로그램을 작성 중입니다.C#에서 양식 레이아웃 변경

선택할 수있는 파일이 약 3 개 있으며 각 파일은 버튼의 레이아웃과 그 속성 중 일부에도 영향을줍니다. 즉 48 가능한 변화의 총, 그래서

label1.Visible = false; 
label2.Visible = false; 
form.size = etc. 

각 파일에 대한 16 가지 컨트롤에 영향을

문제는 순간에 나는이 거대한 목록을 가지고있다.

프로그램의 레이아웃을 구성하는 빠르고/좋은 방법이 있습니까?

미리 감사드립니다.

는 프레임 워크 : 3.5 언어 : C#

윈도우 응용 프로그램

답변

5

내가 패널로 그룹화하고 대신 패널의 가시성을 전환 제안을 형성한다.

+0

위대한 아이디어는 그 생각을해야합니다. 나는 이것이 대답이라고 표시 할 것입니다, 감사합니다. – Nick

2

WPF를 사용하여 응용 프로그램을 작성하는 경우 Visual State Manager를 사용하여 창의 사용자 지정 상태를 정의하고 상태에 따라 컨트롤의 가시성을 설정할 수 있습니다. 또는 컨트롤의 visibility 속성을 ViewModel의 속성에 바인딩 할 수 있습니다.

나중에 참조 할 수 있도록 C#이 언어입니다. 애플리케이션에 사용할 프레임 워크를 지정해야합니다.

+0

포인터에 대한 정보를 추가했습니다. 감사합니다. – Nick

+0

당신이 사용하고있는 Windows 응용 프로그램 프레임 워크 (WPF, Silverlight 또는 Windows Forms)를 지정해야한다는 의미였습니다. –

1

브랜든은 16 개의 컨트롤이 직사각형 영역에 놓여있는 경우 합리적인 해결책이 될 수있는 패널을 사용하여 그룹화를 제안했습니다. 그룹화의 또 다른 형태는 컨트롤 그룹에 적절한 이름을 지정하고 런타임에 이름으로 액세스 할 수 있습니다.

Windows Forms를 사용하고 있다고 가정합니다. 예를 들어,이

label_1_1.Visible = false; 
label_1_2.Visible = false; 
//... 
label_1_16.Visible = false; 

같은 코드의 16 개 라인을 가지는 대신에 당신은 당신의 형태에

Control FindControl(string name) 
{ 
    foreach (Control c in this.Controls) 
    { 
     if (c.Name == name) 
     { 
       return c; 
     } 
    } 
    return null; 
} 

을이 기능을 추가하고이 방법을 사용

for(int i=1;i<=16++i) 
    ((Label)FindControl("label_1_" + i)).Visible=false; 

(추가한다 물론 일부 오류 검사)

+0

그건 아주 좋은 생각인데, 내가 사용하고 싶은 것을보기 위해 그것들을 모두 시험해 보도록하겠습니다. 고맙습니다. – Nick

0

각 레이아웃을 자체 자리 표시 자 컨트롤에 넣었습니다 (모두를 invisib로 설정하십시오. 원하는 마크를 표시하는 로직을 추가하십시오.

(웹 폼에 대해 이야기하고 있다고 가정)