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;
            }
        }
    }
}

これは、ユーザーが終了するかどうかを確認し、必要に応じて保存するために使用されます。ただし、このメソッドを呼び出したときに、保存の要求または終了の要求を無視するように設定できるオプションが 2 つあります。私が考えたこれらを比較する唯一の方法は上記であり、あなたがそれを行うことができると確信しているので、繰り返しははるかに少なくなります. (アプリはまだ開発中で、設定ファイルはまだ完成していないため、保存方法はコメントアウトされています)。

誰でも助けることができますか?

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
        }
    }
}

2 番目のメッセージ ボックスはYes|No|Cancel、Cancel で終了をキャンセルするか、メッセージ ボックスをまったく使用しないでください。

于 2012-12-04T10:44:34.553 に答える