Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 4
Form Class
Form Properties
 TopMost Property
Collapse All/Expand All Collapse All
.NET Framework Class Library
Form..::.TopMost Property

Gets or sets a value indicating whether the form should be displayed as a topmost form.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
Visual Basic
Public Property TopMost As Boolean
C#
public bool TopMost { get; set; }
Visual C++
public:
property bool TopMost {
    bool get ();
    void set (bool value);
}
F#
member TopMost : bool with get, set

Property Value

Type: System..::.Boolean
true to display the form as a topmost form; otherwise, false. The default is false.

A topmost form is a form that overlaps all the other (non-topmost) forms even if it is not the active or foreground form. Topmost forms are always displayed at the highest point in the z-order of the windows on the desktop. You can use this property to create a form that is always displayed in your application, such as a Find and Replace tool window.

The following code example demonstrates how to create a topmost form. The example creates two forms, one that is maximized and one that will be displayed as a topmost form. The first form, named bottomForm, is displayed maximized, using the WindowState property, to better demonstrate the abilities of the topmost form. The second form, named topMostForm, sets the TopMost property to true to display the form as a topmost form. When this code is run, clicking on the maximized form will not cause the topmost form to be displayed below the maximized form. The example requires that the method defined in the example is called from another form.

Visual Basic
Private Sub CreateMyTopMostForm()
   ' Create lower form to display.
   Dim bottomForm As New Form()
   ' Display the lower form Maximized to demonstrate effect of TopMost property.
   bottomForm.WindowState = FormWindowState.Maximized
   ' Display the bottom form.
   bottomForm.Show()
   ' Create the top most form.
   Dim topMostForm As New Form()
   ' Set the size of the form larger than the default size.
   topMostForm.Size = New Size(300, 300)
   ' Set the position of the top most form to center of screen.
   topMostForm.StartPosition = FormStartPosition.CenterScreen
   ' Display the form as top most form.
   topMostForm.TopMost = True
   topMostForm.Show()
End Sub 'CreateMyTopMostForm
C#
private void CreateMyTopMostForm()
{
   // Create lower form to display.
   Form bottomForm = new Form();
   // Display the lower form Maximized to demonstrate effect of TopMost property.
   bottomForm.WindowState = FormWindowState.Maximized;
   // Display the bottom form.
   bottomForm.Show();
   // Create the top most form.
   Form topMostForm = new Form();
   // Set the size of the form larger than the default size.
   topMostForm.Size = new Size(300,300);
   // Set the position of the top most form to center of screen.
   topMostForm.StartPosition = FormStartPosition.CenterScreen;
   // Display the form as top most form.
   topMostForm.TopMost = true;
   topMostForm.Show();
}
Visual C++
private:
   void CreateMyTopMostForm()
   {
      // Create lower form to display.
      Form^ bottomForm = gcnew Form;

      // Display the lower form Maximized to demonstrate effect of TopMost property.
      bottomForm->WindowState = FormWindowState::Maximized;

      // Display the bottom form.
      bottomForm->Show();

      // Create the top most form.
      Form^ topMostForm = gcnew Form;

      // Set the size of the form larger than the default size.
      topMostForm->Size = System::Drawing::Size( 300, 300 );

      // Set the position of the top most form to center of screen.
      topMostForm->StartPosition = FormStartPosition::CenterScreen;

      // Display the form as top most form.
      topMostForm->TopMost = true;
      topMostForm->Show();
   }

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Example works but don't do it!      TCooperCogdill   |   Edit   |   Show History

Don't use the TopMost property just to keep one modeless form on top of another in an application. That's what the Form.Owner property is for!

Here is one reason why this is bad: If you have a TopMost form (like a find/replace form) on top of some main form, and a modal form is launched, like a message box, it might get trapped between the main form and the topmost form ... you wont be able to see the message box or interact with either form using the mouse in this case and have to use the keyboard to just close the message box without even knowing what it says!

Another reason is that it is highly annoying to have windows from one application forced to be above windows of another application (unless you really need this functionality). TopMost does this ... using Form.Owner does not.

If your main form is some native Windows window, meaning you can't set it as the Owner of your modeless form, then you'll want to show your modeless form with the Form.Show(IWin32Window) method, passing something that wraps your native Windows window like a NativeWindow object.

The fact that this was the only example given for TopMost, and its a bad example, is an indication that there aren't very many good reasons to use this property.


Tags What's this?: Add a tag
Flag as ContentBug
Processing
© 2012 Microsoft. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker