2014-11-17 4 views
0

나는 csharp 응용 프로그램을 개발하고 응용 프로그램을 실행할 때 인증 양식과 기본 양식을 동시에 보여주고 싶을 때까지 기본 양식을 비활성화해야합니다. 올바른 인증을하십시오. 나는이 코드를 시도했지만 열린 두 가지 형태로 사용할 하나의 오른쪽위한 인증 후 사용 가능 하나csharp에서 동시에 두 개의 winforms를 표시하는 방법

Form1.ActiveForm.Hide(); 
Form form2 = new Form2(); 
form2.ShowDialog(this); 

덕분에 :

public Form1() 
{ 
    InitializeComponent(); 
    Form form2 = new Form2(); 
    form2.Show(); 
    form2.Enabled = false; 
} 

하고위한 인증 양식의 확인 버튼에이 코드를 넣어 advance

+4

당신이'= False를 사용하도록 설정 때문에 Form2를가 비활성화됩니다 귀하의 질문 - 이해가 안 돼요,' – alykins

+2

귀하의 문제는 OK 버튼을 루틴에 새 Form2의 객체를 생성하고 그것을 보여주고 있다는 것입니다 여기서 생성자에서 만든 원래 Form2 객체를 참조해야합니다. 생성자에서 Form2를 저장하고 다른 함수에서 계속해서 참조하도록 로컬 변수를 만들어야합니다. 이것은 자체적 인 문제를 일으킬 것이지만, 그것은 당신이 시작해야 할 곳입니다. – Frosty840

+3

Form1 및 Form2보다 의미있는 이름을 사용하는 것이 좋습니다. 필자는 Form2가 인증 양식이라고 가정하지만 AuthForm과 같은 이름이 붙여진 경우 Form2가 더 명확합니다. – juharr

답변

4

모달 형식을 표시하십시오. THIS 도움말을 참조하십시오.

// C# 
private void ShowModalForm 
{ 
    Form f = new Form(); 
    f.ShowDialog(this); 
} 

나는 당신이하고 싶은 것을 따라갈 지 모르겠습니다. 인증에 성공하면 클릭 이벤트에서이 코드를 찾으십니까? 이것을 Ok 버튼 이벤트입니다. Form1Hide을 사용하면 아직 양식을 열어 두지 않으므로 모달이며 Form2의 사용을 막을 수 있습니다. Form1을 닫으면 Form2에 다시 액세스하십시오.

양식을 뒤집어야하지만 수행중인 작업에 따라 다릅니다. 인증 양식은 기본 양식의 자녀이어야합니다. 즉, 액세스가 필요한 양식을 연 다음, 모달 양식을 실행하여 권한을 초기화하십시오.

// This should be on your initialization for the form that requires access. 
public MainForm() 
{ 
    AuthenticationForm f = new AuthenticationForm(); 
    f.ShowDialog(); 
} 

// This should be on your form that grants access. 
public AuthenticationForm() 
{ 

} 

private void buttonOK_Click(sender object, EventArgs e) 
{ 
    // Do your authentication here. 
    // if successful then close this modal form to return to the MainForm. 
    this.Close(); 
} 
+0

죄송합니다. 귀하의 코드를 이해하지 못했습니다. – user3309231

+0

귀하의 질문이 충분히 명확하지 않다고 생각합니다. 모달 형식은 닫힐 때까지 상위 폼을 비활성화합니다. 폼을 닫고 다른 폼을 다시 액세스 할 수 있도록 인증 된 모달 폼을 닫으려면 '부울 (Boolean)'연산을 수행 할 수 있습니다. – Volearix

관련 문제