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