2011-03-23 2 views

답변

3

데스크톱 응용 프로그램이 모달 대화 상자를 사용하는 경우.

+0

+1 이것은 찾고자하는 것을 달성하기 위해 "직접 지원되는 내장 된"방법이기 때문에 여기에 예제 코드가 있습니다. –

2

사용이 ShowDialog 기능 :

using (Form2 frm = new Form2()) 
{ 
    frm.ShowDialog(); 
} 

이 현재 양식을 사용하지 만 새로운 형태 사용할 수 있도록합니다.

또는 단추를 다시 클릭하지 않도록 해제 할 수 있습니다.

button1.Enabled = false; 

하지만 다시 액세스해야 할 때 버튼을 사용하도록 설정했는지 확인하십시오.

+0

+1. 이것은 내가 대답을하는 동안 게시되었습니다. 개인 변수를 사용하는 것보다 버튼을 더 이상 사용하지 않는 것이 좋습니다. 하위 대화 상자의 닫기 이벤트에 바인딩하면 버튼을 다시 사용하도록 설정할 때 좋은 방법이 될 수 있으므로 내 대답과 재미를 결합 해 볼 수 있습니다. –

2

푸르 콴은 좋은 대답을 가지고 있습니다. 을 편집하십시오. 재미도 마찬가지입니다.

대화 상자를 모달화할 수 없거나 원하지 않는 경우 추가 상태를 추가하여 하위 대화 상자가 이미 열려 있는지 확인할 수 있습니다. 다음은 의사 코드 예제입니다 (컴파일되지 않을 수도 있습니다) :

class MyForm : Form 
{ 
    public void OnButtonClick() 
    { 
    if(!isSubDialogOpen) 
    { 
     isSubDialogOpen = true; 
     ShowSubDialog(); 
    } 
    } 

    private void OnSubDialogClose() 
    { 
    isSubDialogOpen = false; 
    } 

    private void ShowSubDialog() 
    { 
    SubDialog subDialog = new SubDialog(this); 
    subDialog.OnClose += OnSubDialogClose; 
    subDialog.Show(); 
    } 

    private bool isSubDialogOpen; 
} 

class SubDialog : Form 
{ 
    // ... 
} 
관련 문제