DialogResult с FolderBrowserDialog в WPF

первый раз, когда я внедряю FolderBrowserDialog в WPF, и мне это не нравится...

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

С OpenFileDialog, в прошлом я делал это таким образом:

OpenFileDialog ofd = new OpenFileDialog();
Nullable<bool> result = ofd.ShowDialog();

if (result == true)
{
    // all went well, carry on and do your thing here
}

к сожалению, теперь я получаю ошибки с этим, говоря что-то о преобразованиях из типа DialogResult в bool и что вы.

не может найти ничего о том, как завершить этот шаг с помощью диалога в WPF, может ли кто-нибудь пролить свет?

спасибо заранее!

редактировать

вот мой код с поправками без ошибки преобразования типа. Я не уверен, какое значение проверить result против. Обычно я бы использовал DialogResult.OK за исключением того,что здесь не отображается как допустимое значение.

    private void btnBrowse_Click(object sender, RoutedEventArgs e)
    {
        if (cmbTemplate.SelectedItem == "Blockbusters")
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();

            DialogResult result = fbd.ShowDialog();

            //
            // ERROR: 'System.Nullable<bool>' does not contain a definition for 'OK'
            // and no extention method 'OK' accepting a first argument of type
            // 'System.Nullable<bool>' could be found.
            //
            if (result == DialogResult.OK)
            {
                txtSource.Text = fbd.SelectedPath;
            }
        }
    }

4 ответов


хорошо, так что получается, что все ответы другие ответы здесь были правы.

Они просто пропустили одну вещь, и я думаю, что это была моя вина...

каждый раз, когда я видел DialogResult в Intellisense при попытке использовать его в моем операторе if (как мне сказали использовать, я видел это:

типа bool? Окно.Диалог.Результат
Возвращает или задает значение результата диалога, которое является значением, возвращаемым из
Система.Окна.Окно.Метод ShowDialog ().

исключения:
Система.Исключение InvalidOperationException

этот конкретный объект DialogResult не тот, который я искал.

что, наконец, работал, был следующий:

DialogResult result = fbd.ShowDialog();

if (result == System.Windows.Forms.DialogResult.OK)
{
    // do work here
}

стоит отметить, что у меня есть System.Windows.Forms ссылается в моих использованиях, поэтому я никогда не думал ссылаться на класс из системы, как в приведенном выше фрагменте. Я думал, он все равно использует это.


DialogResult перечисление и определяет значения для указания возвращаемых значений диалогов.

в вашем коде вы должны проверить DialogResult.OK для ввода переменной путь, выбранный в диалоговом окне. DialogResult.OK возвращается при нажатии кнопки " OK " в диалоговом окне, в противном случае -DialogResult.Cancel вернулся.

if (result == DialogResult.OK){
  txtSource.Text = fbd.SelectedPath;
}

поздний ответ здесь, но почему бы и нет . .

private void SelectFolder()
{
    var dialog = new FolderBrowserDialog();
    var status = dialog.ShowDialog(); // ShowDialog() returns bool? (Nullable bool)
    if (status.Equals(true))
    {
        SelectedFolderPath = dialog.SelectedPath;
    }
}

вы можете увидеть результат в сеансе отладки. Он возвращает false при нажатии кнопки Отмена.


DialogResult.(Хорошо, отмените все, что вы хотите проверить),

if (result == DialogResult.OK) // DialogResult.(Your desired result, select from the list it generates)
{
    txtSource.Text = fbd.SelectedPath;
}