2010-01-14 3 views
-2

저는 C#으로 Winforms 응용 프로그램을 만들고 3 개의 탭이있는 탭 컨트롤을 추가했습니다.Winforms의 사용자 워크 플로 제어

사용자가 첫 번째 탭을 채울 때까지 두 번째 탭 페이지에 액세스하는 기능을 제한하려고합니다.

제출 버튼에 첫 번째 탭이 있는데, 사용자가 submit 버튼을 클릭 할 때 두 번째 탭에 액세스 할 수있게하려고합니다.

어떻게하면됩니까? , 사용자가 탭 하나에 값을 변경 할 때마다 탭의 값을 확인하고 비활성화/탭이 적절하게 사용 :

Image unavailable

+1

질문에 더 자세히 설명해주십시오. 하나는 Windows Forms를 사용하고 있습니까? – Sakkle

+2

질문에 태그를 달아 Windows/Web Forms를 지정하십시오. 대답은 그 정보가 없으면 대답이 크게 달라지기 때문에 그 정보는 쓸모가 없습니다. – tvanfosson

+1

하나의 긴 문장입니다! – harryovers

답변

4

사용자가 탭을 선택하지 못하게하면 매우 직관적 인 사용자 인터페이스가됩니다. 다음 버튼을 사용하여 한 페이지에서 다음 페이지로 사용자를 이동시키는 UI 가제트 인 "마법사"를 만드는 것이 좋습니다. 선택 사항 인 뒤로 버튼. 다음 단추의 Enabled 특성을 설정하여 단계가 완료되었음을 알 수 있습니다.

그런 마법사를 만들려면 TabControl을 사용하면됩니다. 프로젝트에 새 클래스를 추가하고 아래 표시된 코드를 붙여 넣습니다. 엮다. 새 컨트롤을 도구 상자의 위쪽에서 폼으로 끌어다 놓습니다. 디자인 타임에는 일반적인 TC와 같아서 각 마법사 단계에 필요한 컨트롤을 추가 할 수 있습니다. 런타임에 탭이 숨겨집니다. Next와 Back 버튼을 구현하는 것은 간단합니다. SelectedIndex 속성을 변경하기 만하면됩니다.

using System; 
using System.Windows.Forms; 

class WizardPages : TabControl { 
    protected override void WndProc(ref Message m) { 
    // Hide tabs by trapping the TCM_ADJUSTRECT message 
    if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1; 
    else base.WndProc(ref m); 
    } 
} 
+0

디자인 모드에서 폼을 채우려는 경우 폼을 디자인하는 것이 매우 어렵습니다. if 문에서 DesignMode를 제거하고보기> 다른 윈도우> 문서 개요에 따라 문서 개요를 활성화하는 것이 좋습니다. 그러면 탭 페이지를 쉽게 전환 할 수 있습니다. – PythEch

2

당신은 사용자가 페이지를 완료 할 때까지 탭을 비활성화 할 수 있습니다.

그러나 프로세스가 탭에 적합한 것처럼 들리지는 않습니다. 아마도 '마법사'와 같은 방식이 더 적절할 것입니다. 각 단계를 완료해야 다음 단계로 넘어갈 수 있습니다. 실제로 더 많은 정보가 유용 할 것입니다.

편집 : 원하는 경우 탭 컨트롤의 Selecting 이벤트를 사용하여 탭 변경을 취소 할 수 있습니다.

+0

+1은이 사실을 제시하는 것이 옳지 않다는데 동의합니다. 옵션을 설정하려고 할 때 매우 실망 스럽지만 허용되지 않고 이유를 말할 수 없습니다. –

0

가장 간단한 방법은 제한된 탭을 표시 안 함으로 설정하거나 사용하지 않도록 설정하는 것입니다.

0

이미 여러 번 언급되었지만 사용자가 tab1에서 제출 버튼을 클릭하고 fileds의 유효성을 검사 한 다음 tab2를 활성화 할 때까지 탭 2와 3을 비활성화하거나 표시하지 않도록 설정할 수 있습니다. tab2에 제출 단추가있는 경우 tab3에 대해 동일한 작업을 수행 할 수 있습니다.

다시 한번 말해서 유용성 관점에서 볼 때 이는 최적의 탭 사용이 아니라는 점을 다시 강조 할 필요가 있습니다. 응용 프로그램이하는 일을 알려 주시면 문제에 대한 더 나은 해결책을 제공 할 수 있습니다.

관련 문제