2014-01-05 2 views
0

WinForm을 표시하면 바로 닫힙니다. 세 가지 WinForms : 시작 하나, 진행률 표시 줄 및 다음 내 주요 하나. 시작 WinForm에서 사용자는 진행률 표시 줄로가는 버튼을 클릭합니다. 그런 다음 진행이 완료되면 다른 클래스의 함수를 통해 기본 폼을 실행하지만 즉시 닫습니다. 다음과 같이 보입니다.내 WinForm이 표시된 후 바로 닫힙니다.

//Starting WinForm 
private void button1_Click(object sender, EventArgs e) 
{ 
    ProgressBarForm PBF = new ProgressBarForm(); 
    PBF.Show(); 
    this.Close(); 
} 
//Progress Bar Form stuff 
private void ProgressBarForm_Shown(object sender, EventArgs e) 
{ 
    // Stuff for progress bar to load 
    progressBar1.Maximum = 100; 
    if (progressBar1.Value == 100) 
    { 
     Main.ExecuteMain(); 
    } 
} 
// In main class 
public static void ExecuteMain() 
{ 
    MainForm MF = new MainForm(); 
    MF.Show() 

    // Other stuff that leads to another function 
} 

그리고 바로 거기에서 즉시 닫힙니다. 내가 별도의 스레드를 실행하려고했지만 여전히 작동하지 않습니다. while 루프에서 유지하려고 시도했지만로드가 계속 유지되고 상호 작용을 허용하지 않습니다. 또한,이 계산면, 나는 양식에 그려뿐만 아니라 노력하고있어. 내 질문은, 왜 다른 두 가지 않는 즉시 닫는 WinForm을 무엇입니까?

답변

3

변경 PBF.Show(); 당신이 바로 창을 닫지

PBF.ShowDialog();에 - 닫힐 그 이유는.

+1

또는 : 숨기기(); PBF.Closed + = 위임 {Close(); }; PBF.Show();' –

0

는 다른 클래스에서 기본 클래스

Public MainForm MF 

에 을 선언해야

private void ProgressBarForm_Shown(object sender, EventArgs e) 
{ 
    // Stuff for progress bar to load 
    progressBar1.Maximum = 100; 
    if (progressBar1.Value == 100) 
    { 
     Main.MF=new Main.MainForm(); 
     Main.MF.Show(); // open form or 
     // Main.MF.ShowDialog(); open modal form 
    } 
} 
0

이유는 Main 방법의 Application.Run() 호출이 양식을 전달한다는 것입니다, 메시지 루프를 종료 그 양식이 닫힐 때. 실제 주 양식을 Application.Run() (숨김으로 설정하고 진행률 표시 줄이 완료 될 때까지 표시하지 않음)

관련 문제