Most of us would have seen and used the Task Manager which is an integral part of Windows. One key behavior exhibited by the task manager is that if its “Always on top” option is turned on, the window will remain open even if focus is moved to another window. So suppose you have notepad and task manager open and the Always on top option is turned on. Now, even if you have set the focus inside notepad and are able to type in notepad, the foreground form will still appear to be Task manager. It makes sense to have this option in applications like Task manager. For example, suppose you want to see the spikes in memory usage or network bandwidth in real time as you use a particular application. It will be easy to have the application open and use it while Task manager is on top so that the changes are visible in real time. In general, this behavior would seem appropriate for many applications that provide system level information in real time.
Having said that, usage of this option can also make sense for user applications, especially for applications which provide some features that work across multiple other applications. For example, I was recently developing an application that provides a history feature in the Windows clipboard (by default Windows clipboard allows a single item to be maintained on the clipboard so this tool was designed to have multiple items on the clipboard and allow pasting of any item from within those) and works across all Windows applications. I felt it would be great to have the Always on top kind of functionality in the form for this application since it would let users always see what is there in the clipboard currently thereby letting him choose the right text/image to paste. As it turns out, enabling this behavior for your applications is really easy if you are using .Net. All you need to do is set the property named TopMost to True for the form that you want to always appear on top. Something like,
mainForm.TopMost = true;
.Net and hence, Windows will handle the rest of the stuff for you; you don’t need to do anything else. Isn’t that really easy? I guess that’s the power that frameworks make available to developers and help in improving their productivity.