2014-10-22 4 views
0

사용자가 콤보 상자에서 값을 선택해야하는 응용 프로그램을 만들고 있습니다. 사용자 선택에 따라 양식은 관련 레이블 및 텍스트 상자로 채워 져야합니다. 이것을 어떻게 성취합니까?콤보 박스에서 사용자 선택을 기반으로 한 폼 업데이트

이 방법을 사용하면 모든 라벨과 텍스트 상자를 만들 수 있으며 사용자 선택에 따라 관련없는 라벨을 숨길 수 있습니다. 그러나 이것은 매우 성가시다. 그것을 할 수있는 깔끔한 방법이 있습니까?

+0

첫 번째 단계는 시도하는 것입니다. – Prix

+0

이 질문은 의견에 어느 정도 의존합니다. 또한 각 선택 항목에 대해 표시 할 내용을 정확하게 결정합니다. 가능한 모든 컨트롤을 폼에 추가 한 다음 필요에 따라 숨기거나 표시하는 것이 가장 좋습니다. 또한 각 선택 항목에 대해 사용자 정의 컨트롤을 디자인 한 다음 적절한 컨트롤의 인스턴스를 선택 영역의 폼에 추가하는 것이 가장 좋습니다. – jmcilhinney

+0

또는 다른 양식을 작성하는 중입니다. 또한 유용한 MDI Windows Forms를 살펴볼 수도 있습니다. – Leron

답변

0

당신은 내가 많은 방법을 선택할 수있는 곳에서 리드를 줄 수 있습니까? @Jumpei - user2276910 8 분 전

아시다시피, 모든 의견은 일종의 리드였습니다. 어떤 방법을 선택 하든지 데이터 표시/숨기기가 필수적입니다. 귀하의 콤보 상자 선택은 사적인 사건입니다. 훨씬 더 자주, 사용자 액세스를 처리 할 필요가 있거나이를 사용하여 응용 프로그램을 빌드 할 방법이 없으며 어떤 시점에서 데이터 나 컨트롤을 표시하거나 숨길 수 없다는 것을 알게됩니다. 그럴리가. 실제로 각각의 접근 방식은 당신에게 그 옵션을 줄 것이기 때문에 구체적인 대답을 얻으려면 프로젝트 자체에 대한 더 많은 정보와 전체적인 아키텍처가 필요합니다.

나는 당신이 생각하는 접근 방식이 가장 좋다고 생각하지만, 매우 직관적이며 어떤 점에서는 당신이 이것을 바꿀 자신감이 있다고 느낍니다.

이렇게하려면 모든 요소의 기본 표시 여부를 설정하는 양식을 만드십시오. 동적으로 컨트롤을 추가/제거하는 것은 그다지 쉽지는 않지만 가시성 옵션을 설정하는 것은 간단합니다. 따라서 가시성 옵션을 사용하여 시작하는 것이 더 낫다고 생각합니다.

양식의 기본 상태가 준비되면 몇 가지 방법이 필요합니다. 먼저 combobox select에 대한 이벤트 핸들러는 다음과 같아야합니다.

private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e) 
{ 

    ComboBox comboBox = (ComboBox) sender; 

    string userSelection = (string)ComboBox1.SelectedItem; 

이제부터 몇 가지 작업을 수행해야합니다. 먼저 userSelection이 유효한지 확인하십시오. 이 검사는 당신이 당신이 거 계속 유효한 선택이되어 있는지 확인 후, 필수적이다 (그리고 우리는 SelectedIndexChanged 이벤트 여전히) AA 방법 호출하여 :

private void SetControlsToDefault() 
{ 

} 

이 방법의 의지가 기본 가시성 모든 컨트롤이 포함되어 있습니다 지위. 그 이유는 사용자가 이전 선택에 표시된 한 번을 숨기지 않으면 콤보 박스로 둘 이상의 선택을 할 때 특정 선택에 대해 숨겨져 있어야 할 때 볼 수있는 컨트롤로 끝나기 때문입니다.

폼이 초기 상태로 반환되면 사용자가 정확히 무엇을 선택했는지 확인하고 관련 컨트롤을 표시해야합니다.

: 여기

일부는 내가이 더 이해하게 생각하기 때문에 내가 if-else if 문을 제안합니다 switch를 사용하는 것이 좋습니다 것입니다하지만 당신이 좋아하는 경우 SetControlsToDefault();를 호출 한 후 이벤트 핸들러 그렇게 다시 변경할 수 있습니다 우리는이

if (userSelection.Equals("selection1")) 
{ 
    ShowControlsForSelectionOne(); 
} 
else if (userSelection.Equals("selection2")) 
{ 
    ShowControlsForSelectionTwo(); 
} 
else if (userSelection.Equals("selection3")) 
{ 
    ShowControlsForSelectionThree(); 
} 

여기에서 ShowControlsForSelectionOne(), ShowControlsForSelectionTwo(), ShowControlsForSelectionThree()은 모두 선택과 관련된 요소에만 표시 여부를 설정하는 비공개 방법입니다. 그리고 그것은 모두가되어야합니다. 이것은이 작업을 완료하는 많은 방법 중 하나입니다.

관련 문제