Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

MessageBox sempre visibili

Se si tenta di visualizzare una MessageBox di un'applicazione che risiede nella system tray, può succedere che essa rimanga nascosta dalle altre finestre aperte sul desktop. Il problema è dovuto al fatto che la MessageBox appartiene ad un'applicazione che non è in foreground. Fortunamentamente, uno degli overload della funzione MessageBox.Show consente di specificare di fronte a quale finestra visualizzare il messaggio: il trucco, dunque, è visualizzare la MessageBox davanti alla finestra che attualmente è in primo piano.

Innanzo tutto dobbiamo definire una classe che restituisce la finestra in primo piano: 

public class ForegroundWindow : IWin32Window { private static ForegroundWindow _window = new ForegroundWindow(); [DllImport("user32.dll")] private static extern IntPtr GetForegroundWindow(); private ForegroundWindow() { } public static IWin32Window Instance { get { return _window; } } IntPtr IWin32Window.Handle { get { return GetForegroundWindow(); } } }

A questo punto, per essere essere sicuri che la MessageBox sia visibile sul desktop, è sufficiente specificare la finestra in primo piano come "proprietaria" del messaggio:

MessageBox.Show(ForegroundWindow.Instance, "Questa finestra è visibile.", "Prova");

Fonte: MSDN Magazine di Luglio 2004

Print | posted on Saturday, June 2, 2007 12:22 PM | Filed Under [ C# ]

Feedback

Gravatar

# re: MessageBox sempre visibili

La fonte, per correttezza, andrebbe citata :)
http://msdn.microsoft.com/msdnmag/issues/04/04/NETMatters/
6/3/2007 3:45 PM | Marco De Sanctis
Gravatar

# re: MessageBox sempre visibili

Hai ragione, chiedo venia... Di solito cito sempre le fonti dei post, ma questa volta proprio mi è sfuggito :-( Ho già provveduto ad aggiungerla!
6/3/2007 7:19 PM | Marco Minerva
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET