Тэги

Silverlight (36) WPF (10) IIS (7) Visual Studio (7) SharePoint (6) .Net Framework (5) ODP.NET (5) ASP.NET (4) C# (4) common (4) Network Settings (3) JavaScript (2) MS Office (2) Resharper (2) WCF (2) WEB (2) XPath (2) XSLT (2) ADO.NET (1) APEX (1) CMD (1) CSS (1) EF (1) HTML (1) Hardware bugs (1) Java (1) MS SQL (1) Oracle (1) PDF (1) Version Control (1) XAML (1)

среда, 19 января 2011 г.

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 и вызывает перегрузку принимающую целевое окно или нет.

Комментариев нет:

Отправить комментарий