Show / Hide Table of Contents

# Class Toplevel

Toplevel views can be modally executed.

##### Inheritance

System.Object
Responder
View
Toplevel
Window

##### Implements

System.IDisposable
System.Collections.IEnumerable
System.ComponentModel.ISupportInitializeNotification
System.ComponentModel.ISupportInitialize

##### Inherited Members

View.Added
View.Removed
View.Enter
View.Leave
View.MouseEnter
View.MouseLeave
View.MouseClick
View.HotKey
View.HotKeySpecifier
View.Driver
View.Subviews
View.TabIndexes
View.TabIndex
View.TabStop
View.Id
View.IsCurrentTop
View.WantMousePositionReports
View.WantContinuousButtonPressed
View.Frame
View.GetEnumerator()
View.LayoutStyle
View.Bounds
View.X
View.Y
View.Width
View.Height
View.SuperView
View.SetNeedsDisplay()
View.SetNeedsDisplay(Rect)
View.ChildNeedsDisplay()
View.Add(View[])
View.BringSubviewToFront(View)
View.SendSubviewToBack(View)
View.SendSubviewBackwards(View)
View.BringSubviewForward(View)
View.Clear()
View.Clear(Rect)
View.ScreenToView(Int32, Int32)
View.ClipToBounds()
View.SetClip(Rect)
View.DrawFrame(Rect, Int32, Boolean)
View.DrawHotString(ustring, Attribute, Attribute)
View.DrawHotString(ustring, Boolean, ColorScheme)
View.Move(Int32, Int32)
View.PositionCursor()
View.HasFocus
View.OnAdded(View)
View.OnRemoved(View)
View.OnEnter(View)
View.OnLeave(View)
View.Focused
View.MostFocused
View.ColorScheme
View.AddRune(Int32, Int32, Rune)
View.ClearNeedsDisplay()
View.DrawContent
View.OnDrawContent(Rect)
View.SetFocus(View)
View.KeyPress
View.ProcessHotKey(KeyEvent)
View.ProcessColdKey(KeyEvent)
View.KeyDown
View.KeyUp
View.EnsureFocus()
View.FocusFirst()
View.FocusLast()
View.FocusPrev()
View.FocusNext()
View.LayoutStarted
View.LayoutComplete
View.Initialized
View.LayoutSubviews()
View.Text
View.TextAlignment
View.IsInitialized
View.ToString()
View.OnMouseEnter(MouseEvent)
View.OnMouseLeave(MouseEvent)
View.OnMouseEvent(MouseEvent)
View.Dispose(Boolean)
View.BeginInit()
View.EndInit()
Responder.MouseEvent(MouseEvent)
Responder.Dispose()
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)

###### Namespace: Terminal.Gui

###### Assembly: Terminal.Gui.dll

##### Syntax

    public class Toplevel : View, IDisposable, IEnumerable, ISupportInitializeNotification, ISupportInitialize

##### Remarks

Toplevels can be modally executing views, started by calling Run(Toplevel, Boolean). They return control to the caller when RequestStop() has been called (which sets the Running property to false).

A Toplevel is created when an application initialzies Terminal.Gui by callling Init(ConsoleDriver, IMainLoopDriver). The application Toplevel can be accessed via Top. Additional Toplevels can be created and run (e.g. Dialogs. To run a Toplevel, create the Toplevel and call Run(Toplevel, Boolean).

Toplevels can also opt-in to more sophisticated initialization by implementing System.ComponentModel.ISupportInitialize. When they do so, the System.ComponentModel.ISupportInitialize.BeginInit() and System.ComponentModel.ISupportInitialize.EndInit() methods will be called before running the view. If first-run-only initialization is preferred, the System.ComponentModel.ISupportInitializeNotification can be implemented too, in which case the System.ComponentModel.ISupportInitialize methods will only be called if System.ComponentModel.ISupportInitializeNotification.IsInitialized is false. This allows proper View inheritance hierarchies to override base class layout code optimally by doing so only on first run, instead of on every run.

### Constructors

#### Toplevel()

Initializes a new instance of the Toplevel class with Computed layout, defaulting to full screen.

##### Declaration

    public Toplevel()

#### Toplevel(Rect)

Initializes a new instance of the Toplevel class with the specified absolute layout.

##### Declaration

    public Toplevel(Rect frame)

##### Parameters

Type | Name | Description
--- | --- | ---
Rect | frame | A superview-relative rectangle specifying the location and size for the new Toplevel

### Fields

#### Ready

Fired once the Toplevel's MainLoop has started it's first iteration. Subscribe to this event to perform tasks when the Toplevel has been laid out and focus has been set. changes. A Ready event handler is a good place to finalize initialization after calling `Run()(topLevel)`.

##### Declaration

    public Action Ready

##### Field Value

Type | Description
--- | ---
System.Action |

### Properties

#### CanFocus

Gets or sets a value indicating whether this Toplevel can focus.

##### Declaration

    public override bool CanFocus { get; }

##### Property Value

Type | Description
--- | ---
System.Boolean | `true` if can focus; otherwise, `false`.

##### Overrides

View.CanFocus

#### MenuBar

Gets or sets the menu for this Toplevel

##### Declaration

    public MenuBar MenuBar { get; set; }

##### Property Value

Type | Description
--- | ---
MenuBar |

#### Modal

Determines whether the Toplevel is modal or not. Causes ProcessKey(KeyEvent) to propagate keys upwards by default unless set to true.

##### Declaration

    public bool Modal { get; set; }

##### Property Value

Type | Description
--- | ---
System.Boolean |

#### Running

Gets or sets whether the MainLoop for this Toplevel is running or not.

##### Declaration

    public bool Running { get; set; }

##### Property Value

Type | Description
--- | ---
System.Boolean |

##### Remarks

Setting this property directly is discouraged. Use RequestStop() instead.

#### StatusBar

Gets or sets the status bar for this Toplevel

##### Declaration

    public StatusBar StatusBar { get; set; }

##### Property Value

Type | Description
--- | ---
StatusBar |

### Methods

#### Add(View)

##### Declaration

    public override void Add(View view)

##### Parameters

Type | Name | Description
--- | --- | ---
View | view |

##### Overrides

View.Add(View)

#### Create()

Convenience factory method that creates a new Toplevel with the current terminal dimensions.

##### Declaration

    public static Toplevel Create()

##### Returns

Type | Description
--- | ---
Toplevel | The create.

#### OnKeyDown(KeyEvent)

##### Declaration

    public override bool OnKeyDown(KeyEvent keyEvent)

##### Parameters

Type | Name | Description
--- | --- | ---
KeyEvent | keyEvent |

##### Returns

Type | Description
--- | ---
System.Boolean |

##### Overrides

View.OnKeyDown(KeyEvent)

#### OnKeyUp(KeyEvent)

##### Declaration

    public override bool OnKeyUp(KeyEvent keyEvent)

##### Parameters

Type | Name | Description
--- | --- | ---
KeyEvent | keyEvent |

##### Returns

Type | Description
--- | ---
System.Boolean |

##### Overrides

View.OnKeyUp(KeyEvent)

#### ProcessKey(KeyEvent)

##### Declaration

    public override bool ProcessKey(KeyEvent keyEvent)

##### Parameters

Type | Name | Description
--- | --- | ---
KeyEvent | keyEvent |

##### Returns

Type | Description
--- | ---
System.Boolean |

##### Overrides

View.ProcessKey(KeyEvent)

#### Redraw(Rect)

##### Declaration

    public override void Redraw(Rect bounds)

##### Parameters

Type | Name | Description
--- | --- | ---
Rect | bounds |

##### Overrides

View.Redraw(Rect)

#### Remove(View)

##### Declaration

    public override void Remove(View view)

##### Parameters

Type | Name | Description
--- | --- | ---
View | view |

##### Overrides

View.Remove(View)

#### RemoveAll()

##### Declaration

    public override void RemoveAll()

##### Overrides

View.RemoveAll()

#### WillPresent()

Invoked by Begin(Toplevel) as part of the Run(Toplevel, Boolean) after the views have been laid out, and before the views are drawn for the first time.

##### Declaration

    public virtual void WillPresent()

### Implements

System.IDisposable
System.Collections.IEnumerable
System.ComponentModel.ISupportInitializeNotification
System.ComponentModel.ISupportInitialize