如果不满足条件,则停止启动应用程序

时间:2014-01-25 03:40:51

标签: c# winforms if-statement

我需要显示一个消息框,然后在不满足条件时停止我的程序,我该怎么办?

现在我有这个:

private void MainForm_Load(object sender, EventArgs e){
    if(condition == false){
        MessageBox.Show("Condition not met. Program will now close!");
        Application.Exit();
    }
    new window.ShowDialog();
}

但是当我运行它时,新窗口会短暂闪烁并且程序关闭。

5 个答案:

答案 0 :(得分:2)

我没有显示新的对话框,如果未经授权,我只需将主要表格从它们下面关闭。 This.Close立即退出程序。

private void MainForm_Load(object sender, EventArgs e)
{
    //some code here
    if (condition == false)
    {
        MessageBox.Show("Condition not met. Program will now close!");
        //i log the user logged in
        this.Close();
    } 
    else 
    {
         //continue to setup the form
    }
}

答案 1 :(得分:1)

您正在调用Application.Exit();在显示对话框之后,无需等待对话结果返回您。这就是为什么它闪烁而消失。

试试这个。

DialogResult result = MessageBox.Show("Condition not met. Program will now close!", "Confirmation", messageBoxButtons.YesNoCancel);
if(result == DialogResult.Yes)
    //...
else if (result == DialogResult.No)
    //...
else
    //...

答案 2 :(得分:1)

使用else块:

private void MainForm_Load(object sender, EventArgs e){
    if(condition == false){
        MessageBox.Show("Condition not met. Program will now close!");
        Application.Exit();
    }
    else {
        new dialog.ShowDialog();
    }
}

Application.Exit不会立即退出应用程序。它会导致消息循环结束,但您的代码仍然会运行MainForm_Load方法。

答案 3 :(得分:1)

您不希望处理启动表单的Load事件,因为启动表单已在该阶段显示。您希望将代码放在Main方法中,这是创建启动表单的位置。以下是Program.cs文件中的Main方法默认情况下的样子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

你只需在这三行代码中包含一个'if'语句。 Application.Run调用将阻塞,直到它传递的表单关闭,此时Main方法完成并退出您的应用程序。如果你没有进行Application.Run调用,那么Main方法立即完成,应用程序关闭,而不用创建,更不用说显示启动表单了。

答案 4 :(得分:1)

使用:

private void MainForm_Load(object sender, EventArgs e){
    if(condition == false){
        MessageBox.Show("Condition not met. Program will now close!");
        Environment.Exit(0);// or Application.Exit();

    } else {
    new dialog.ShowDialog();
    }
}