2012-11-13 2 views
0

나는 C#을 (자바에서 전환) 그리고 난양식 폐쇄 자체

아픈 그냥 내가 가지고있는 코드를 붙여 그 대부분을 설명 할 C#으로 문제를 이해하는 GUI의 비트를 보내고있어 새로운 해요.

메인 클래스 다음 frame.Show() 메소드를 사용하여

Frame frame; 
keepRunning = true; 

public GraphicsComponent() 
{ 
    frame = new Frame(); 
    frame.Show(); 
} 

public void run() 
{ 
    while (keepRunning) 
    { 
     Console.WriteLine("Running"); 
    } 
} 

public static void Main() 
{ 
    GraphicsComponent gameComponent = new GraphicsComponent(); 

    gameComponent.run(); 
} 

, 그것은 나타나고 빠른 순간 사라집니다. 그러나 "실행 중"루프가 실행됩니다.

내가 본 다른 방법은 ShowDialoge()라는 또 다른 방법으로 창을 열어 두지 만 닫힐 때까지 나머지 코드는 실행을 차단합니다.

내가 사용하고 싶은 방식은 기본적으로 Java에서 GUI가 작동하는 방식입니다. 필요한 경우 나머지 코드에서 객체 (및 구성 요소)를 참조 할 수 있습니다.

감사합니다.

편집 :있다, 그래서 여기에 혼란을 많이 내 프레임 클래스 :

public partial class Frame : Form 
{ 
    public Frame() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 
} 
+0

winforms 디자이너를 보셨습니까? 일반적으로 System.Windows.Forms.Form에서 상속되는 클래스 (예 : Form1)를 만들고 Application.Run (새 Form1())을 호출합니다. 당신의 주요 방법. – antonijn

+0

네, 이상한 설정입니다 ... 또한 keepRunning은 어디에 정의되어 있습니까? – Alan

+0

양식을 사용해야합니다. 프레임은 당신이 필요로하는 것이 아니며 WinForms가 아닌 WPF입니다 – Alan

답변

1

윈폼 응용 프로그램을 킥오프 정상적인 방법은 파일 -입니다> 새 윈폼 프로젝트. 이 작업을 수행 할 때 "Program.cs"를 얻습니다.이 프로그램에는 응용 프로그램의 진입 점인 Main 메서드가 들어 있습니다. 거기에서 당신은 다음과 같은 코드가 있습니다

public ConfigForm() 
    { 
     InitializeComponent(); 

     // Other init work here 

    } 
:

이 예에서
[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new ConfigForm()); 
    } 

나는 새로운 "ConfigForm" "그 양식이며,이처럼 보이는 몇 가지 코드 ctor에의에 포함 킥오프

나는이 프로젝트에 마우스 오른쪽 버튼으로 클릭하고 새 양식을 추가하여 양식을 만듭니다.

당신은 Application.Run 방법, here를 참조로 볼 수도 있습니다. 당신은 기본이 될 것입니다은 "기본 폼"을 지정할 수 있습니다 응용 프로그램의 지속 기간 동안 실행되는 양식, 닫을 때 응용 프로그램을 끝내거나 원하는 경우 다른 옵션을 지정할 수 있습니다. 아마도 가장 간단한 해결책은 메인 폼을 시작하는 것입니다. 그리고 폼이 어플리케이션 기간 동안 라이브이기 때문에, 폼 내에서 다른 장기 실행 코드를 시작할 수 있습니다. 일종의 백그라운드 작업을 수행하면서 항상 실행하고 싶은 코드라면 자신의 스레드에서 실행하는 것이 좋습니다. 그러나 스레딩은 어렵 기 때문에 C#/.net에 익숙하지 않다면 필요한 경우를 제외하고는 스레딩에서 벗어나려고 노력할 것입니다.

+0

Form을 사용하면 호출은 프레임이라고 부릅니다. 어떻게 양식 외부에서 코드를 실행할 수 있습니까? –

+0

수정 사항을 답장에 추가했습니다. –