Способ открытия диалоговых окон

Способ открытия диалоговых окон

Каким образом можно вызвать диалоговое окно?

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

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

Во-первых, это окно печати. Его, чаще всего, вызывают благодаря функции печати нажатием в меню «Файл» кнопки «Печать». Окно печати также можно открыть и при помощи сочетания клавиш «Ctrl» и «Р». А если вы выберите в контекстном меню пункт «Печать», тем самым минуете диалоговое окно и приступите сразу к непосредственной печати нужного вам файла.

Во-вторых, это окно открытия файла или какого-нибудь документа. Его можно вызвать, если нажать клавишу под названием «Открыть». Данная кнопка всегда находится в панели инструментов программы, которую вы используете в своей работе. После этих действий перед вами откроется изображение папки, которая открыта. Кроме того, вы можете вызвать данное диалоговое окно, если будет использовать меню «Файл», а в нем пункт «Открыть». Подобное действие вы можете провести, если нажмете одновременно клавиши «Ctrl» и «О».

В-третьих, это диалоговое окно, которое отвечает за сохранение файла. Его вызывают только одним способом. В меню «Файл» вам необходимо выбрать пункт под названием «Сохранить как», а затем указать название и тип файла, а также место его размещения на жестком диске.

В-четвертых, это окно настройки ОС и различного оборудования. Чтобы вызывать его, вам следует вначале нажать «Пуск» на вашем рабочем столе, а затем пункт «Панель управления».

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

Диалоговое окно, которое отвечает за свойства папки, вызывается путем нажатия правой кнопки мыши по нужной вам папке.

Источник

Общие сведения о диалоговых окнах

Изолированные приложения обычно имеют главное окно, в котором отображаются основные данные, по которым приложение работает, и предоставляет функциональные возможности для обработки этих данных с помощью пользовательский интерфейс таких механизмов, как строки меню, панели инструментов и строки состояния. Нетривиальное приложение может также отображать дополнительные окна для следующих целей:

отображения определенных сведений для пользователей;

сбора сведений от пользователей;

сбора и отображения сведений.

Эти типы окон называются диалоговыми окнами, и существует два типа: модальные и немодальные.

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

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

Читайте также:  Экономический способ производства как форма общественной организации

Windows Presentation Foundation (WPF) позволяет создавать несколько типов диалоговых окон, включая окна сообщений, общие диалоговые окна и пользовательские диалоговые окна. В этом разделе обсуждаются все, а в образце диалогового окна приведены соответствующие примеры.

Окна сообщений

Окно сообщения является диалоговым, которое можно использовать для вывода текстовой информации и разрешения пользователям принимать решения с помощью кнопок. На следующем рисунке показано окно сообщения, в котором отображается текстовая информация, задается вопрос и предоставляются три кнопки для ответа на этот вопрос.

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

Чтобы отобразить окно сообщения, вызовите static Show метод, как показано в следующем коде.

Когда коду, который показывает окно сообщения, нужно определить и обработать решение пользователя (какая кнопка была нажата), он может проверить результат окна сообщения, как показано в следующем коде.

Дополнительные сведения об использовании окон сообщений см. в разделе MessageBox , образец MessageBoxи Образец диалогового окна.

Хотя MessageBox может предложить простое взаимодействие с пользователем диалогового окна, преимущество использования MessageBox — это единственный тип окна, который может быть отображен приложениями, выполняемыми в песочнице безопасности частичного доверия (см. раздел Безопасность), например в приложениях браузера XAML (XBAP).

Большинство диалоговых окон отображают и собирают более сложные данные, чем результат окна сообщения, в том числе текст, выбранные варианты (флажки), взаимоисключающий выбор (переключатели) и списки выбора (списки, поля со списком, поля с раскрывающимся списком). для этого Windows Presentation Foundation (WPF) предоставляет несколько общих диалоговых окон и позволяет создавать собственные диалоговые окна, хотя использование либо ограничено приложениями, работающими с полным доверием.

Общие диалоговые окна

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

Windows Presentation Foundation (WPF) инкапсулирует общие диалоговые окна открытия файла, сохранения файлов и печати и предоставляет их в качестве управляемых классов для использования в автономных приложениях. В этом разделе приводится краткий обзор каждого типа диалоговых окон.

Диалоговое окно открытия файла

Диалоговое окно открытия файлов, показанное на следующем рисунке, используется функциональностью открытия файла для получения имени открываемого файла.

Общее диалоговое окно открытия файла реализуется как OpenFileDialog класс и находится в Microsoft.Win32 пространстве имен. Следующий код показывает, как создавать, настраивать и отображать такое окно, а также как обрабатывать результат.

Дополнительные сведения о диалоговом окне Открытие файла см. в разделе Microsoft.Win32.OpenFileDialog .

OpenFileDialog может использоваться для безопасного извлечения имен файлов приложениями, работающими с частичным доверием (см. раздел Безопасность).

диалоговое окно сохранения файлов

Диалоговое окно сохранения файлов, показанное на следующем рисунке, используется функциональностью сохранения файла для получения имени сохраняемого файла.

Диалоговое окно «Общие файлы сохранения» реализуется как SaveFileDialog класс и находится в Microsoft.Win32 пространстве имен. Следующий код показывает, как создавать, настраивать и отображать такое окно, а также как обрабатывать результат.

Дополнительные сведения о диалоговом окне Сохранение файла см. в разделе Microsoft.Win32.SaveFileDialog .

Печать — диалоговое окно

Диалоговое окно печати, показанное на следующем рисунке, используется функциональными возможностями печати для выбора и настройки принтера, на котором пользователь хочет печатать данные.

Общее диалоговое окно печати реализуется как PrintDialog класс и находится в System.Windows.Controls пространстве имен. Следующий код показывает, как создавать, настраивать и отображать такое окно.

Дополнительные сведения о диалоговом окне Печать см. в разделе System.Windows.Controls.PrintDialog . Подробное описание печати в WPF см. в разделе Общие сведения о печати.

Настраиваемые диалоговые окна

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

Читайте также:  Голландский способ засолки сельди

Создание модального настраиваемого диалогового окна

В этом разделе показано, как использовать Window для создания типичной реализации модального диалогового окна с помощью Margins диалогового окна в качестве примера (см. Пример диалогового окна). Это Margins диалоговое окно показано на следующем рисунке.

Настройка модального диалогового окна

Пользовательский интерфейс для типичного диалогового окна включает следующее.

Различные элементы управления, которые необходимы для сбора нужных данных.

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

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

Кнопка Закрыть в заголовке окна.

Кнопки сворачивания, развертывания и восстановления .

Системное меню для сворачивания, развертывания, восстановления и закрытия диалогового окна.

Расположение выше и в центре окна, открывшего диалоговое окно.

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

Клавиша ESC в качестве сочетания клавиш, которое вызывает нажатие кнопки Отмена . Это можно сделать, задав IsCancel для свойства кнопки Отмена значение true .

Клавиша ВВОД (или возврата) в качестве сочетания клавиш, которое вызывает нажатие кнопки ОК . Для этого нужно задать IsDefault свойство кнопки ОК true .

Следующий код демонстрирует такую конфигурацию.

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

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

Открытие модального диалогового окна

Диалоговое окно обычно отображается в результате выбора пользователем пункта меню для выполнения доменной функции, такой как установка полей документа в текстовом процессоре. Отображение диалогового окна похоже на отображение обычного окна, хотя требуется дополнительная настройка для диалогового окна. Весь процесс создания, настройки и открытия диалогового окна показан в следующем коде.

Здесь код передает в диалоговое окно сведения по умолчанию (текущие поля). Он также задает Window.Owner свойство со ссылкой на окно, в котором отображается диалоговое окно. в общем случае необходимо всегда задавать владельца для диалогового окна, чтобы обеспечить поведение окна, которое является общим для всех диалоговых окон (дополнительные сведения см. в разделе обзор Windows WPF ).

Необходимо указать владельца для поддержки автоматизации ПОЛЬЗОВАТЕЛЬСКОГО интерфейса для диалоговых окон (см. Обзор модели автоматизации пользовательскогоинтерфейса).

После настройки диалогового окна он отображается как модальный путем вызова ShowDialog метода.

Проверка предоставленных пользователем данных

Если открывается диалоговое окно и пользователь предоставляет требуемые данные, диалоговое окно отвечает за проверку допустимости предоставленных данных по следующим причинам.

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

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

С точки зрения взаимодействия с пользователем диалоговое окно может помочь пользователям, показывая, какие введенные ими данные являются недопустимыми.

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

Чтобы проверить привязанный элемент управления в WPF, необходимо определить правило проверки и связать его с привязкой. Правило проверки является пользовательским классом, производным от ValidationRule . В следующем примере показано правило проверки, MarginValidationRule которое проверяет, что привязанное значение — Double и находится в указанном диапазоне.

В этом коде логика проверки правила проверки реализуется путем переопределения Validate метода, который проверяет данные и возвращает соответствующее значение ValidationResult .

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

После того как правило проверки будет связано, WPF автоматически применит его при входе данных в привязанный элемент управления. Если элемент управления содержит недопустимые данные, WPF отобразит красную рамку вокруг недопустимого элемента управления, как показано на следующем рисунке.

Читайте также:  Какие есть способы производства кроме конвейерного

WPF не ограничивает доступ пользователя к недопустимому элементу управления до тех пор, пока не будут введены допустимые данные. Это правильное поведение диалогового окна; пользователь должен иметь возможность свободно перемещаться по элементам управления в диалоговом окне, независимо от того, правильны ли введенные данные. Однако это означает, что пользователь может ввести недопустимые данные и нажать кнопку ОК . По этой причине код также должен проверять все элементы управления в диалоговом окне, когда нажата кнопка ОК , обрабатывая Click событие.

Этот код перечисляет все объекты зависимостей в окне и, если они являются недопустимыми (возвращенные GetHasError , недопустимый элемент управления получает фокус, IsValid метод возвращает false , а окно считается недопустимым.

Если диалоговое окно является допустимым, оно может быть безопасно закрыто и выполнен возврат. В рамках процесса возврата необходимо возвращать результат в вызывающую функцию.

Установка результата модального диалогового окна

Открытие диалогового окна с помощью ShowDialog является фундаментальным методом, аналогичным вызову метода: код, открывший диалоговое окно с использованием ShowDialog Waits до ShowDialog возврата. При ShowDialog возврате код, вызвавший его, должен решить, следует ли продолжать обработку или прекратить обработку в зависимости от того, нажал ли пользователь кнопку ОК или кнопку Отмена . Чтобы упростить это решение, диалоговое окно должно вернуть выбор пользователя в качестве Boolean значения, возвращаемого ShowDialog методом.

При нажатии кнопки ОК ShowDialog должен возвращаться true . Это достигается путем задания DialogResult Свойства диалогового окна при нажатии кнопки ОК .

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

При нажатии кнопки Отмена ShowDialog должна возвращаться false , что также требует установки DialogResult Свойства.

Если IsCancel свойство кнопки имеет значение true и пользователь нажимает кнопку « Отмена » или клавишу ESC, автоматически устанавливается значение DialogResult false . Следующая разметка действует аналогично предыдущему коду без необходимости в обработке Click события.

Диалоговое окно автоматически возвращается, false когда пользователь нажимает кнопку Закрыть в строке заголовка или выбирает пункт меню Закрыть в системном меню.

Обработка данных, возвращаемых из модального диалогового окна

Если параметр DialogResult задается в диалоговом окне, то функция, которая открыла ее, может получить результат диалогового окна, проверив DialogResult свойство при ShowDialog возврате.

Если диалоговое окно имеет значение true , функция использует его в качестве подсказки для получения и обработки данных, предоставленных пользователем.

После ShowDialog возврата диалоговое окно нельзя открыть повторно. Вместо этого придется создать новый экземпляр.

Если результат диалога равен false , функция должна завершить обработку соответствующим образом.

Создание немодального настраиваемого диалогового окна

Немодальное диалоговое окно, например диалоговое окно поиска, показанное на следующем рисунке, в основном имеет такой же внешний вид, как и модальное диалоговое окно.

Однако поведение несколько отличается, как показано в следующих разделах.

Открытие немодального диалогового окна

Немодальное диалоговое окно открывается путем вызова Show метода.

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

Обработка данных, возвращенных из немодального диалогового окна

В этом примере объект FindDialogBox может вернуть один или несколько результатов поиска в главное окно в зависимости от искомого текста без какой бы то ни было определенной частоты. Как и в случае с модальным диалоговым окном, немодальное диалоговое окно может возвращать результаты с помощью свойств. Однако окну, которому принадлежит данное диалоговое окно, нужно знать, когда следует проверять эти свойства. Один из способов сделать это — реализовать для диалогового окна событие, которое возникает всякий раз, когда текст найден. FindDialogBox реализует TextFoundEvent для этой цели, для которой сначала требуется делегат.

С помощью TextFoundEventHandler делегата FindDialogBox реализует TextFoundEvent .

Следовательно, Find может вызвать событие при обнаружении результата поиска.

Затем окну-владельцу нужно зарегистрировать и обработать это событие.

Закрытие немодального диалогового окна

Поскольку DialogResult не нужно задавать, немодальное диалоговое окно можно закрыть с помощью механизмов, предоставляемых системой, включая следующие:

Нажатие кнопки Закрыть в строке заголовка.

Нажатие клавиш ALT+F4.

В меню система выберите пункт Закрыть .

Кроме того, код может вызывать Close при нажатии кнопки Закрыть .

Источник

Оцените статью
Разные способы