2009-02-04 5 views
0

I가 다음과 같은 구성에서 사용되는 2 개 형태의 기본 폼 및 스플래시 형태를 사용하는 응용 프로그램 :C 번호 하나를 형성의 WinForm 프로젝트 다른 차단

public class MainForm : Form 
{ 
    public MainForm() 
    { 
     SplashScreen splash = new SplashScreen(); 

     // configure Splash Screen 
    } 
} 


public class SplashScreen 
{ 
    public SplashScreen() 
    { 
     InitializeComponent(); 

     // perform initialization 

     this.ShowDialog(); 
     this.BringToFront(); 
    } 
} 

NB 주된 형태는로 만들어 다음 코드를

Application.Run(new MainForm()); 

위의 문제는 시작이

splash.Close(); 
폐쇄하지 않는 한 시작의 구성이 발생하지 않는다는 것입니다

이 경우에만 나머지 MainForm 생성자가 실행됩니다. 이 차단 동작을 어떻게 쉽게 중지시킬 수 있습니까?

+0

보인다. 그 코드도 게시 할 수 있습니까? –

답변

1

난 이미 당신이 같은 일을 요구 다른 문제에 작동 예를 들어 당신에 응답 : 오류가되는 SplashScreen 생성자 내부 가능성이 높습니다처럼

C# winforms startup (Splash) form not hiding

+0

사과. 위의 질문과는 다른 문제이지만 솔루션에서이 문제도 해결할 수 있다고 말하는 것이 맞습니다. 나는 그것을 시도해야 할 것이다. –

0

splash.OpenDialog()가 아닌 splash.Open()을 사용하면 발생하지 않습니다.

1

일반적으로 별도의 스레드에 스플래시 화면을 표시하고 기본 스레드가로드되는 동안 수행해야합니다. 사소한 문제는 아닙니다. 특히, Control.Invoke을 사용하여 준비가되었을 때 스플래시 화면을 닫을 것을 요청해야합니다. (스레드 선호도)

0

기본적으로 스플래시 양식을 보여주고 싶지만 주요 양식. 여기

내가 그것을 한 적이 방법은 다음과 같습니다

class MainForm : Form { 

    SplashScreen splash = new SplashScreen(); //Make your splash screen member 

    public MainForm() 
    { 
     splash.Show(); //Just show the form 
    } 

} 

이 그런 다음 MainForm_Load에 정상적인로 초기화를.

양식은 (MainForm_Shown)가 표시 될 준비가 이제

:

public MainForm_Shown() 
{ 
    splash.Close(); 
} 

시작 화면을 표시하는 동안이 정상적으로 MainForm로드를 할 수 있습니다.