DialogResult с FolderBrowserDialog в WPF
В первый раз я реализую FolderBrowserDialog в WPF, и я не люблю его один бит...
Помимо проблем, которые я выяснил, что Windows.Forms не упоминалось в моем проекте, теперь у меня возникли проблемы с попыткой увидеть, какое значение возвращает значение 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, может ли кто-нибудь пролить свет?
Спасибо заранее!
EDIT
Здесь мой код с поправками без ошибки преобразования типа. Я не уверен, какую ценность проверить 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;
}
}
}
Ответы
Ответ 1
Хорошо, так что получается, что все ответы на другие ответы здесь были правильными.
Они просто пропустили одно, и я думаю, что это была моя ошибка...
Каждый раз, когда я видел DialogResult
в Intellisense при попытке использовать его в моем if-заявлении (как мне сказали использовать, я увидел это:
BOOL? Window.Dialog.Result
Получает или задает значение результата диалога, которое является значением, которое возвращается из файла Метод System.Windows.Window.ShowDialog().
Исключения:
System.InvalidOperationException
Этот конкретный объект DialogResult не тот, который я искал.
Что в итоге получилось:
DialogResult result = fbd.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
// do work here
}
Стоит отметить, что у меня есть System.Windows.Forms
ссылка в моих приложениях, поэтому я никогда не думал ссылаться на класс из System, как в приведенном выше фрагменте. Я думал, что это все равно.
Ответ 2
DialogResult - это перечисление и определяет значения, указывающие возвращаемые значения диалогов.
В вашем коде вы должны проверить DialogResult.OK
, чтобы инициализировать свою переменную с помощью пути, выбранного в диалоговом окне. DialogResult.OK
возвращается, когда в диалоговом окне нажата кнопка "ОК", иначе возвращается DialogResult.Cancel
.
if (result == DialogResult.OK){
txtSource.Text = fbd.SelectedPath;
}
Ответ 3
DialogResult. (ОК, Отмените все, что вы хотите проверить),
if (result == DialogResult.OK) // DialogResult.(Your desired result, select from the list it generates)
{
txtSource.Text = fbd.SelectedPath;
}