浏览目录并取消,重试

时间:2009-03-08 13:29:30

标签: architecture

我已经知道了从用户那里获取应用程序目录的简单任务。我有一个AppFolderDialog表单,我将其用作对话框,其中有OK和Cancel按钮,只读文本框和Browse按钮。浏览按钮打开FolderBrowserDialog。

现在,当用户单击“确定”时,我需要一个循环来检查所选目录是否包含某个文件,并为用户提供“取消”或“重试”消息框。取消会将取消转发到对话框以关闭它并返回DialogResult.Cancel。重试只会让用户有机会浏览目录。

现在我还需要对话框本身的“取消”按钮,因此用户无需选择无效目录即可取消。我知道我错了,但是我很快就忙于做很多事情,我的注意力集中了。关于如何在应用程序中改进此任务,我将不胜感激。

3 个答案:

答案 0 :(得分:1)

我建议您不要将两个对话框绑在一起。让第一个对话框获取正确的目录。一旦用户单击“确定”,第一个对话框将被取消,您将检查应用程序中的结果,如果预期的文件不存在,则弹出一个错误对话框,通知他们所选目录不正确。你可以给他们重试的选项,这会再次弹出第一个对话框。取消任一对话框只会导致没有选择目录。

答案 1 :(得分:1)

请注意,在实际尝试使用该目录时,您仍然必须拥有检查目录是否存在的代码。

看到你必须拥有该代码,我不打扰在目录选择对话框中检查。让用户选择一个目录,如果他们以某种方式选择一个不存在的目录,或者没有你的应用程序数据或其他任何内容,请推迟错误消息。毕竟,用户可以在您的应用中选择一个非常好的目录,然后将其删除。

答案 2 :(得分:0)

这是你想要的吗?

    private string GetPathFromUser()
    {
        FolderBrowserDialog dialog = new FolderBrowserDialog();
        while (dialog.ShowDialog() == DialogResult.OK)
        {
            // Do your validation here
            bool pathIsGood = false;

            if (pathIsGood)
            {
                return dialog.SelectedPath;
            }
            else
            {
                DialogResult cancelRetry = MessageBox.Show("Directory is not valid becuase bla..", "", MessageBoxButtons.RetryCancel);
                if (cancelRetry == DialogResult.Cancel) break;
            }
        }
        return null;
    }