Диалог сохранения поверх другого пользовательского диалога ведет себя странно! - PullRequest
0 голосов
/ 04 апреля 2010

В моем приложении есть функция сохранения изображений для диаграмм. Элемент управления диаграммой - это пользовательский элемент управления с пользовательской логикой. Он также имеет некоторое масштабирование в зависимости от размера, масштаба и т. Д. Однако, сохраняя их как изображение, я хотел бы дать пользователю возможность установить размер изображения (например, 800x600 px @ 300 DPI).

Для этого я создал форму с текстовыми полями / флажками и т. Д. Для различных настроек изображения. Один из этих текстовых полей предназначен для имени файла. Текстовое поле имени файла доступно только для чтения и сопровождается кнопкой обзора, которая отображает SaveFileDialog при нажатии.

Пользователь нажимает кнопку «Сохранить как изображение» в главном меню формы. Я показываю ImageExportDialog, используя код ниже:

using(ImageExportDialog dlg = new ImageExportDialog())
{
   if(dlg.ShowDialog() == DialogResult.OK)
   {
      //get the settings selected by the user and generate the image
   }
}

В ImageExportDialog пользователь нажимает кнопку обзора, и SaveFileDialog отображается следующим образом:

using(SaveFileDialog dlg = new SaveFileDialog())
{
   if(dlg.ShowDialog() == DialogResult.OK)
   {
      txtFileName.Text = dlg.FileName;
   }
}

Теперь проблема заключается в том, что когда пользователь нажимает кнопку «Сохранить» в SaveFileDialog, как и ожидалось, устанавливается txtFileName.Text, но родительский настраиваемый диалог также, похоже, возвращается из метода ShowDialog, и DialogResult совпадает с один для SaveFileDialog! Затем управление переходит к «, чтобы получить настройки, выбранные пользователем, и генерировать изображение » части кода выше.

Не совсем уверен, что я здесь не так делаю!

1 Ответ

0 голосов
/ 04 апреля 2010

Arghhh !!!

Сам выяснил проблему. Я скопировал и вставил кнопку ОК на ImageExportDialog, чтобы создать кнопку «Обзор» для SaveFileDialog.

Угадайте, что у кнопки «Обзор» свойство DialogResult установлено на «ОК»! Изменение на «Нет» решило проблему.

...