Просмотр каталога и Отмена, Повторить - PullRequest
0 голосов
/ 08 марта 2009

Я завязал голову над простой задачей - получить каталог приложений от пользователя. У меня есть форма AppFolderDialog, которую я использую как диалог, в котором есть кнопки «ОК» и «Отмена», текстовое поле только для чтения и кнопка «Обзор». Кнопка обзора открывает FolderBrowserDialog.

Теперь, когда пользователь нажимает кнопку ОК, мне нужен цикл, чтобы проверить, содержит ли выбранный каталог определенный файл, и дать пользователю окно сообщения Отмена или Повторить. Отмена переадресует отмену в диалог, чтобы закрыть его и вернуть DialogResult.Cancel. Повторная попытка просто даст пользователю еще один шанс найти каталог.

Теперь мне также нужна кнопка «Отмена» в самом диалоге, чтобы пользователь мог отменить ее, не выбрав неверный каталог. Я знаю, что у меня все неправильно, но я занят многими вещами одновременно, и моя концентрация подорвана. Буду признателен за некоторые предложения о том, как улучшить эту задачу в приложении.

Ответы [ 3 ]

1 голос
/ 08 марта 2009

Обратите внимание, что вам все равно потребуется код, который проверяет, существует ли каталог, когда вы на самом деле пытаетесь что-то с ним сделать.

Учитывая, что вам все равно нужен этот код, я бы не стал проверять в диалоге выбора каталога. Позвольте пользователю выбрать каталог, и если он каким-то образом выберет тот, который не существует, или в нем нет данных вашего приложения или что-то еще, отложите сообщение об ошибке. В конце концов, пользователь может выбрать в вашем приложении совершенно хороший каталог, а затем удалить его.

1 голос
/ 08 марта 2009

Я бы посоветовал вам не связывать два диалога вместе. У первого диалога просто получите правильный каталог. Как только пользователь нажимает «ОК», первое диалоговое окно закрывается, вы проверяете результат в своем приложении, и, если ожидаемый файл не существует, появляется диалоговое окно с сообщением об ошибке, сообщающее, что выбранный каталог неверен. Вы можете дать им возможность повторить попытку, после чего снова появится первое диалоговое окно. Отмена любого из диалогов просто приведет к тому, что вы не выберете каталог.

0 голосов
/ 08 марта 2009

Это то, что вы ищете?

    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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...