2011-04-27 71 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