2014-03-18 17 views
1

그래서 콘솔 응용 프로그램이지만 몇 가지 양식을 관리하는 프로그램이 있습니다. 기본 양식은 보조 양식을 시작할 수있는 기능을 가지고 있으며 보조 양식 중 하나 이상을 시작할 수 있기를 원합니다.화면에서 .Show() 메서드를 사용하여 시작한 양식을 유지하는 방법

문제는 modal 명령 Form.ShowDialog()을 사용할 때 보조 양식에서 벗어나 기본 양식에 액세스 할 수 없기 때문에 두 번째 보조를 시작할 수 없습니다.

내가 Form.Show()으로 실행하는 데 문제가 발생하면 양식이 다시 시작되자 마자 다시 닫힙니다. 물론, 그것은 초기 기능을 수행하지만 즉시 사라집니다. 이 모덜리스 디스플레이에 접근하는 가장 좋은 방법은 무엇입니까?

EDIT : 여기에 제가 작업하는 형식이 있습니다. 양식을 처리하는 자체 정의 된 프로세스 클래스와 각 프로세스가 콘솔 앱의 목록에 저장되어 있으며 각 프로세스는 자체 myFORM

public class Process 
{ 
    /*The process class is used to track all running processes related to GeFoss(any forms or consol apps, etc) 
    * Methods: 
    *  -initialize: This has two overloads, one for a form, and one for general objects. Basically this just starts the main part of the app 
    *  -ShowDialog: This simply calls the Form.ShowDialog method if the process controls a Form 
    *  -_NewThread: Begins a new thread centered on Leo 
    *  -Leo: simply launches another copy of the same Object 
    */ 


    public Form myFORM; 
    public Type mytype; 
. 
. 
. 
. 
. 
. . 
. 
. 
public void ShowDialog() 
    { 
     //This should only be called when the type of Process is a form. If it isn't a form though, the try-catch will prevent a crash 
     try 
     { 

      myFORM.Show(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(Convert.ToString(ex)); 
     } 
    }\ 

편집

: \ 나는 해결 방법 찾을 수 있었다. 내가 일하는 프로젝트가 시뮬레이션 된 OS와 비슷하기 때문에 Form.ShowDialog()를 사용하여 기본 GUI Form을 시작하고 Form.Show()를 사용하여 다음 양식을 모두 실행한다고했는데 이것이 작동하고있는 것 같습니다. 나를 위해

+0

이 일반적인 것이 아닙니까? 대화 상자를 시작할 때 동일한 솔루션의 다른 형식으로 이동해서는 안됩니다. 죄송합니다. 질문을 잘못 해석 한 경우 :/ – sora0419

+0

문맥 : OS GUI를 시뮬레이트하는 프로젝트가 있습니다. 보조 양식은 OS의 "프로그램"(지금까지는 텍스트 편집기)입니다. 한 번에 하나 이상의 "프로그램"을 열 수 있기를 바랍니다. – JeffL

답변

0

다른 양식을 만들어야합니다. Form form = new Form(); 지금은 개체를 선언했지만 절대로 개체를 만들지 않습니다. 양식 myForm은 int a;과 같으며 변수가 없습니다. 각 개체에 대해 Form 클래스와 동일한 작업을 수행 할 수 있습니다. form.Show(); 동일한 개체를 참조하고 있습니다. 그것이 그것이 닫히는 이유입니다.

+0

ShowDialog() void가 – JeffL

+0

으로 호출되기 전에 클래스가 나중에 Form을 만들지 않도록 삭제 한 대답에 대한 주석에 언급했습니다. 확실히 당신은 Process에서 객체를 생성하고 proccess.ShowDialog(); 또는 폼의 ShowDialog() 메서드를 사용합니까? – popojargo

+0

Initialize라는 또 다른 함수가 있는데, 주 ​​프로그램이 Process.ShowDialog() 전에 호출하고 Process.initialize()가 양식 – JeffL