2011-04-27 22 views
1

摘要: 當應用程序未使用指定的用戶帳戶運行時,應用程序退出但仍創建GUI。我希望它完全退出使用Application.Exit退出應用程序而不顯示GUI

詳細信息: 我原以爲我下面的代碼可以工作。它檢查用戶名的特定屬性,如果它沒有,則關閉應用程序。簡單。問題是應用程序仍然會創建一個GUI,即使用戶名不包含該屬性。有任何想法嗎?

此代碼是我的主要方法。這是一個窗體。

代碼:

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還是其他?這個代碼在我的主要方法中是 – 2011-04-27 19:01:21

+0

。它是一個窗體 – toosweetnitemare 2011-04-27 19:03:05

回答

5

在主Program.cs文件,你會看到Application.Run()如果你做檢查之前,這行代碼被擊中。那麼如果用戶不正確,就跳過這一行。

Application.Run()是啓動應用程序運行循環的行。

如果運行循環從未命中並且main退出。該應用程序將退出。

+0

+1。這就是我如何處理正在運行的應用程序的重複實例。 – jp2code 2011-04-27 19:07:53

+0

謝謝傑森。這就說得通了。我只是修復了我的代碼。我會讓你成爲我的解決方案。 – toosweetnitemare 2011-04-27 19:08:00

5

您的形式編碼,而不是在Program.cs中的Main()事件。如果您在表單實際實例化之前退出,您將無法獲得GUI。

+0

謝謝gregory – toosweetnitemare 2011-04-27 19:10:16

0

看起來好像你是在你的控件的構造函數調用中做的。嘗試在Program類的Main方法中進行檢查。

+0

謝謝gordanvij – toosweetnitemare 2011-04-27 19:09:15

1

你太過分了。 InitializeComponent看起來像你已經在Windows窗體中。然後你已經創建了一個窗口。在創建表單之前將您的支票放入主方法中,然後不顯示任何內容。 您可以打開調試器並檢查調用堆棧。搜索代碼來自您的項目的第一個方法。把這個方法放在支票上,你應該沒問題。

你的, 阿洛伊斯·克勞斯

+0

謝謝alois。 – toosweetnitemare 2011-04-27 19:08:16

相關問題