WPF Tips: Не доверяйте ложной модальности MessageBox.Show - ее надо заслужить.

Если вы расчитываете на модальности MessageBox.Show, то должен заметить, что ее легко обойти, есил MessageBox.Show("текст") вызывается в момент, когда приложение не активно.
После этого вы можете закрыть окно приложения или выполнить на нем какие-либо действия, и MessageBox, как обычно, не помешает вам это сделать.

Это можно поправить, всегда передавая нужное вам окно в перегрузки метода MessageBox.Show, где первым параметром принимается объект класса Window.

Только учтите следующие замечания:

  1. Нельзя передать null в эти перегруженные методы.

  2. Если вам кажется неправильным тащить за собой целевое окно и вы захотите использовать Application.Current.MainWindow, то учтите, что там может быть null, если еще ни одного окна не открывалось или вы сами можете где-то в коде задать Application.Current.MainWindow = null;,
    а MessageBox.Show при этом порвет (выпадет на исключении)!
    Нужет будет утильный метод который проверяет Application.Current.MainWindow на null и вызывает перегрузку принимающую целевое окно или нет.

Комментарии

Популярные сообщения из этого блога

A4tech. Мышь не найдена. Пожалуйста, подсоедините мышь.

The type or namespace name 'IISOle' could not be found (are you missing a using directive or an assembly reference?)

Как экспортировать контакты из iPhone