1

我目前在我的 Quit 方法中有以下代码:

public void QuitApplication(FormClosingEventArgs a, bool b)
{
    bool c = Properties.App.Default.AskToExit, d = Properties.App.Default.AskToSave;
    if (!b)
    {
        if (!c && !d)
        {

        }
        else if (!c)
        {
            if (YesNoMessageBox("Save Before Quit?", "Would you like to save your settings before you Quit?") == DialogResult.Yes)
            {
                _debug("Settings Saved");

                //Properties.App.Default.Save();
                //Properties.Settings.Default.Save();
            }
        }
        else if (!d)
        {
            if (YesNoMessageBox("Really Quit?", "Are you sure you want to quit?") == DialogResult.No)
            {
                a.Cancel = true;
            }
        }
        else
        {
            if (YesNoMessageBox("Really Quit?", "Are you sure you want to quit?") == DialogResult.Yes)
            {
                if (YesNoMessageBox("Save Before Quit?", "Would you like to save your settings before you Quit?") == DialogResult.Yes)
                {
                    _debug("Settings Saved");

                    //Properties.App.Default.Save();
                    //Properties.Settings.Default.Save();
                }
            }
            else
            {
                a.Cancel = true;
            }
        }
    }
}

这用于检查用户是否要退出并在需要时保存。但是,我有两个选项可以设置为在调用此方法时忽略要求保存或要求退出。我想到的比较这些的唯一方法是上面的,我相信你可以做到,所以重复次数要少得多。(保存方法已被注释掉,因为应用程序仍在开发中,设置文件尚未完成)。

任何人都可以帮忙吗?

4

1 回答 1

0

我不知道你的参数是做什么的b,请处理你的变量命名。似乎如果这是真的,它应该跳过所有问题并退出。然后就可以命名了forceQuit

这应该这样做:

public void QuitApplication(FormClosingEventArgs closeArgs, bool forceQuit)
{
    if (forceQuit)
    {
        return;
    }

    if (Properties.App.Default.AskToExit)
    {
        if (YesNoMessageBox("Really Quit?", "Are you sure you want to quit?") != DialogResult.Yes)
        {
            // Cancel exit
            closeArgs.Cancel = true;
            return;
        }
    }

    if (Properties.App.Default.AskToSave)
    {
        if (YesNoMessageBox("Save Before Quit?", "Would you like to save your settings before you Quit?") == DialogResult.Yes)
        {
            // Save
        }
    }
}

我想说第二个消息框应该是一个Yes|No|Cancel,其中 Cancel 取消退出,或者更好的是,根本不使用消息框。

于 2012-12-04T10:44:34.553 回答