2011-04-27 1 views
1

요약 : 응용 프로그램이 지정된 사용자 계정으로 실행되지 않으면 응용 프로그램은 종료되지만 여전히 GUI를 작성합니다. 나는 완전히 끝내기를 바란다.GUI를 표시하지 않고 Application.Exit을 사용하여 응용 프로그램을 종료하십시오.

Details : 내가 아래에있는 코드가 효과가 있다고 생각했을 것이다. 사용자 이름의 특정 속성을 확인합니다.없는 경우 사용자 이름이 앱을 닫습니다. 단순한. 문제는 사용자 이름에 해당 속성이 없더라도 응용 프로그램이 여전히 GUI를 작성한다는 것입니다. 어떤 아이디어?

이 코드는 제 주요 방법입니다. 그것은 창문 형태입니다.

코드 : 당신은 program.cs에서 메인() 이벤트의 형태로 코딩되지 않은

public ProgramMain() 
{ 
    String runningUser = Environment.UserName; 
    if (!runningUser.Contains("asdf")) 
    { 
     MessageBox.Show("You must run this application with your asdf account."); 
     Application.Exit(); 
    } 
    else 
    { 
     InitializeComponent(); 
    } 
} 
+0

이 코드는'Main' 메소드 안에 있습니까? 또한,이 WPF, Winforms, 또는 뭔가 다른가요? –

+0

이 코드는 내 주요 방법입니다. 그것은 창문 형태이다 – toosweetnitemare

답변

5

. 그런 다음 사용자가 올바르지 않으면 줄을 건너 뛰십시오.

Application.Run()은 응용 프로그램 실행 루프를 시작하는 줄입니다.

실행 루프가 실행되지 않고 메인이 종료 된 경우. 응용 프로그램이 종료됩니다.

+0

+1. 이것은 실행중인 응용 프로그램의 복제 인스턴스를 처리하는 방법입니다. – jp2code

+0

Jason에게 감사드립니다. 그건 의미가 있습니다. 방금 코드를 수정했습니다. 내가 당신을 내 해결책으로 삼았습니다. – toosweetnitemare

5

. 양식이 실제로 인스턴스화되기 전에 종료하면 GUI를 얻지 못합니다.

+0

gregory 감사합니다 – toosweetnitemare

0

당신이 컨트롤의 생성자를 호출하는 것처럼 그것은 보인다. 프로그램 클래스의 Main 메서드에서이 검사를 수행하십시오.

+0

고마워요, 고맙습니다. – toosweetnitemare

1

너는 너무 멀다. InitializeComponent는 이미 Windows Form 안에있는 것처럼 보입니다. 그런 다음 이미 창을 만들었습니다. 폼이 생성되기 전에 메인 메소드에 체크를하면 아무 것도 표시되지 않습니다. 디버거를 중단하고 호출 스택을 확인할 수 있습니다. 프로젝트의 코드가있는 첫 번째 메소드를 검색하십시오. 이 방법을 수표에 넣으면 괜찮을 것입니다.

너의 것, 당신이 Application.Run을 볼 홈페이지에서 Program.cs 파일() 당신이 체크를 할 경우 코드 줄이 공격하기 전에에서 로이스 크라우스

+0

감사합니다. – toosweetnitemare