Show / Hide Table of Contents

# Class View

View is the base class for all views on the screen and represents a visible element that can render itself and contains zero or more nested views.

##### Inheritance

System.Object
Responder
View
Button
CheckBox
FrameView
HexView
Label
ListView
MenuBar
ProgressBar
RadioGroup
ScrollBarView
ScrollView
TextField
TextView
Toplevel

##### Inherited Members

Responder.CanFocus
Responder.MouseEvent(MouseEvent)

###### Namespace: Terminal.Gui

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

##### Syntax

    public class View : Terminal.Gui.Responder, System.Collections.IEnumerable

##### Remarks

The View defines the base functionality for user interface elements in Terminal/gui.cs. Views can contain one or more subviews, can respond to user input and render themselves on the screen.

Views can either be created with an absolute position, by calling the constructor that takes a Rect parameter to specify the absolute position and size (the Frame of the View) or by setting the X, Y, Width and Height properties on the view. Both approaches use coordinates that are relative to the container they are being added to.

When you do not specify a Rect frame you can use the more flexible Dim and Pos objects that can dynamically update the position of a view.
The X and Y properties are of type Pos and you can use either absolute positions, percentages or anchor points. The Width and Height properties are of type Dim and can use absolute position, percentages and anchors. These are useful as they will take care of repositioning your views if your view's frames are resized or if the terminal size changes.

When you specify the Rect parameter to a view, you are setting the LayoutStyle to Absolute, and the view will always stay in the position that you placed it. To change the position change the Frame property to the new position.

Subviews can be added to a View by calling the Add method. The container of a view is the Superview.

Developers can call the SetNeedsDisplay method on the view to flag a region or the entire view as requiring to be redrawn.

Views have a ColorScheme property that defines the default colors that subviews should use for rendering. This ensures that the views fit in the context where they are being used, and allows for themes to be plugged in. For example, the default colors for windows and toplevels uses a blue background, while it uses a white background for dialog boxes and a red background for errors.

If a ColorScheme is not set on a view, the result of the ColorScheme is the value of the SuperView and the value might only be valid once a view has been added to a SuperView, so your subclasses should not rely on ColorScheme being set at construction time.

Using ColorSchemes has the advantage that your application will work both in color as well as black and white displays.

Views that are focusable should implement the PositionCursor to make sure that the cursor is placed in a location that makes sense. Unix terminals do not have a way of hiding the cursor, so it can be distracting to have the cursor left at the last focused view. So views should make sure that they place the cursor in a visually sensible place.

The metnod LayoutSubviews is invoked when the size or layout of a view has changed. The default processing system will keep the size and dimensions for views that use the LayoutKind.Absolute, and will recompute the frames for the vies that use LayoutKind.Computed.

### Constructors

#### View()

Initializes a new instance of the View class and sets the view up for Computed layout, which will use the values in X, Y, Width and Height to compute the View's Frame.

##### Declaration

    public View ();

#### View(Rect)

Initializes a new instance of the View class with the absolute dimensions specified in the frame. If you want to have Views that can be positioned with Pos and Dim properties on X, Y, Width and Height, use the empty constructor.

##### Declaration

    public View (Terminal.Gui.Rect frame);

##### Parameters

Type | Name | Description
--- | --- | ---
Rect | frame | The region covered by this view.

### Fields

#### Driver

Points to the current driver in use by the view, it is a convenience property for simplifying the development of new views.

##### Declaration

    public static Terminal.Gui.ConsoleDriver Driver;

##### Field Value

Type | Description
--- | ---
ConsoleDriver | To be added.

### Properties

#### Bounds

The bounds represent the View-relative rectangle used for this view. Updates to the Bounds update the Frame, and has the same side effects as updating the frame.

##### Declaration

    public Terminal.Gui.Rect Bounds { get; set; }

##### Property Value

Type | Description
--- | ---
Rect | The bounds.

#### ColorScheme

The color scheme for this view, if it is not defined, it returns the parent's color scheme.

##### Declaration

    public Terminal.Gui.ColorScheme ColorScheme { get; set; }

##### Property Value

Type | Description
--- | ---
ColorScheme | To be added.

#### Focused

Returns the currently focused view inside this view, or null if nothing is focused.

##### Declaration

    public Terminal.Gui.View Focused { get; }

##### Property Value

Type | Description
--- | ---
View | The focused.

#### Frame

Gets or sets the frame for the view.

##### Declaration

    public virtual Terminal.Gui.Rect Frame { get; set; }

##### Property Value

Type | Description
--- | ---
Rect | The frame.

##### Remarks

Altering the Frame of a view will trigger the redrawing of the view as well as the redrawing of the affected regions in the superview.

#### HasFocus

Gets or sets a value indicating whether this View has focus.

##### Declaration

    public override bool HasFocus { get; }

##### Property Value

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

#### Height

Gets or sets the height for the view. This is only used when the LayoutStyle is Computed, if the LayoutStyle is set to Absolute, this value is ignored.

##### Declaration

    public Terminal.Gui.Dim Height { get; set; }

##### Property Value

Type | Description
--- | ---
Dim | The height.

#### Id

Gets or sets an identifier for the view;

##### Declaration

    public NStack.ustring Id { get; set; }

##### Property Value

Type | Description
--- | ---
NStack.ustring | The identifier.

#### LayoutStyle

Controls how the view's Frame is computed during the LayoutSubviews method, if Absolute, then LayoutSubviews does not change the Frame properties, otherwise the Frame is updated from the values in X, Y, Width and Height properties.

##### Declaration

    public Terminal.Gui.LayoutStyle LayoutStyle { get; set; }

##### Property Value

Type | Description
--- | ---
LayoutStyle | The layout style.

#### MostFocused

Returns the most focused view in the chain of subviews (the leaf view that has the focus).

##### Declaration

    public Terminal.Gui.View MostFocused { get; }

##### Property Value

Type | Description
--- | ---
View | The most focused.

#### Subviews

This returns a list of the subviews contained by this view.

##### Declaration

    public System.Collections.Generic.IList<Terminal.Gui.View> Subviews { get; }

##### Property Value

Type | Description
--- | ---
System.Collections.Generic.IList<View> | The subviews.

#### SuperView

Returns the container for this view, or null if this view has not been added to a container.

##### Declaration

    public Terminal.Gui.View SuperView { get; }

##### Property Value

Type | Description
--- | ---
View | The super view.

#### WantMousePositionReports

Gets or sets a value indicating whether this View want mouse position reports.

##### Declaration

    public virtual bool WantMousePositionReports { get; set; }

##### Property Value

Type | Description
--- | ---
System.Boolean | `true` if want mouse position reports; otherwise, `false`.

#### Width

Gets or sets the width for the view. This is only used when the LayoutStyle is Computed, if the LayoutStyle is set to Absolute, this value is ignored.

##### Declaration

    public Terminal.Gui.Dim Width { get; set; }

##### Property Value

Type | Description
--- | ---
Dim | The width.

#### X

Gets or sets the X position for the view (the column). This is only used when the LayoutStyle is Computed, if the LayoutStyle is set to Absolute, this value is ignored.

##### Declaration

    public Terminal.Gui.Pos X { get; set; }

##### Property Value

Type | Description
--- | ---
Pos | The X Position.

#### Y

Gets or sets the Y position for the view (line). This is only used when the LayoutStyle is Computed, if the LayoutStyle is set to Absolute, this value is ignored.

##### Declaration

    public Terminal.Gui.Pos Y { get; set; }

##### Property Value

Type | Description
--- | ---
Pos | The y position (line).

### Methods

#### Add(View)

Adds a subview to this view.

##### Declaration

    public virtual void Add (Terminal.Gui.View view);

##### Parameters

Type | Name | Description
--- | --- | ---
View | view | To be added.

#### Add(View[])

Adds the specified views to the view.

##### Declaration

    public void Add (Terminal.Gui.View[] views);

##### Parameters

Type | Name | Description
--- | --- | ---
View[] | views | Array of one or more views (can be optional parameter).

#### AddRune(Int32, Int32, Rune)

Displays the specified character in the specified column and row.

##### Declaration

    public void AddRune (int col, int row, Rune ch);

##### Parameters

Type | Name | Description
--- | --- | ---
System.Int32 | col | Col.
System.Int32 | row | Row.
System.Rune | ch | Ch.

#### ChildNeedsDisplay()

Flags this view for requiring the children views to be repainted.

##### Declaration

    public void ChildNeedsDisplay ();

#### Clear()

Clears the view region with the current color.

##### Declaration

    public void Clear ();

##### Remarks

This clears the entire region used by this view.

#### Clear(Rect)

Clears the specfied rectangular region with the current color

##### Declaration

    public void Clear (Terminal.Gui.Rect r);

##### Parameters

Type | Name | Description
--- | --- | ---
Rect | r | To be added.

#### ClearNeedsDisplay()

Removes the SetNeedsDisplay and the ChildNeedsDisplay setting on this view.

##### Declaration

    protected void ClearNeedsDisplay ();

#### ClipToBounds()

Sets the Console driver's clip region to the current View's Bounds.

##### Declaration

    public Terminal.Gui.Rect ClipToBounds ();

##### Returns

Type | Description
--- | ---
Rect | The existing driver's Clip region, which can be then set by setting the Driver.Clip property.

#### DrawFrame(Rect, Int32, Boolean)

Draws a frame in the current view, clipped by the boundary of this view

##### Declaration

    public void DrawFrame (Terminal.Gui.Rect rect, int padding = 0, bool fill = false);

##### Parameters

Type | Name | Description
--- | --- | ---
Rect | rect | Rectangular region for the frame to be drawn.
System.Int32 | padding | The padding to add to the drawn frame.
System.Boolean | fill | If set to `true` it fill will the contents.

#### DrawHotString(ustring, Boolean, ColorScheme)

Utility function to draw strings that contains a hotkey using a colorscheme and the "focused" state.

##### Declaration

    public void DrawHotString (NStack.ustring text, bool focused, Terminal.Gui.ColorScheme scheme);

##### Parameters

Type | Name | Description
--- | --- | ---
NStack.ustring | text | String to display, the underscoore before a letter flags the next letter as the hotkey.
System.Boolean | focused | If set to `true` this uses the focused colors from the color scheme, otherwise the regular ones.
ColorScheme | scheme | The color scheme to use.

#### DrawHotString(ustring, Attribute, Attribute)

Utility function to draw strings that contain a hotkey

##### Declaration

    public void DrawHotString (NStack.ustring text, Terminal.Gui.Attribute hotColor, Terminal.Gui.Attribute normalColor);

##### Parameters

Type | Name | Description
--- | --- | ---
NStack.ustring | text | String to display, the underscoore before a letter flags the next letter as the hotkey.
Attribute | hotColor | Hot color.
Attribute | normalColor | Normal color.

#### EnsureFocus()

Finds the first view in the hierarchy that wants to get the focus if nothing is currently focused, otherwise, it does nothing.

##### Declaration

    public void EnsureFocus ();

#### FocusFirst()

Focuses the first focusable subview if one exists.

##### Declaration

    public void FocusFirst ();

#### FocusLast()

Focuses the last focusable subview if one exists.

##### Declaration

    public void FocusLast ();

#### FocusNext()

Focuses the next view.

##### Declaration

    public bool FocusNext ();

##### Returns

Type | Description
--- | ---
System.Boolean | `true`, if next was focused, `false` otherwise.

#### FocusPrev()

Focuses the previous view.

##### Declaration

    public bool FocusPrev ();

##### Returns

Type | Description
--- | ---
System.Boolean | `true`, if previous was focused, `false` otherwise.

#### GetEnumerator()

Gets an enumerator that enumerates the subviews in this view.

##### Declaration

    [System.Runtime.CompilerServices.IteratorStateMachine(typeof(Terminal.Gui.View/<GetEnumerator>d__23))]
    public System.Collections.IEnumerator GetEnumerator ();

##### Returns

Type | Description
--- | ---
System.Collections.IEnumerator | The enumerator.

#### LayoutSubviews()

This virtual method is invoked when a view starts executing or when the dimensions of the view have changed, for example in response to the container view or terminal resizing.

##### Declaration

    public virtual void LayoutSubviews ();

#### Move(Int32, Int32)

This moves the cursor to the specified column and row in the view.

##### Declaration

    public void Move (int col, int row);

##### Parameters

Type | Name | Description
--- | --- | ---
System.Int32 | col | Col.
System.Int32 | row | Row.

#### PositionCursor()

Positions the cursor in the right position based on the currently focused view in the chain.

##### Declaration

    public virtual void PositionCursor ();

#### ProcessColdKey(KeyEvent)

##### Declaration

    public override bool ProcessColdKey (Terminal.Gui.KeyEvent keyEvent);

##### Parameters

Type | Name | Description
--- | --- | ---
KeyEvent | keyEvent | Contains the details about the key that produced the event.

##### Returns

Type | Description
--- | ---
System.Boolean | To be added.

#### ProcessHotKey(KeyEvent)

##### Declaration

    public override bool ProcessHotKey (Terminal.Gui.KeyEvent keyEvent);

##### Parameters

Type | Name | Description
--- | --- | ---
KeyEvent | keyEvent | Contains the details about the key that produced the event.

##### Returns

Type | Description
--- | ---
System.Boolean | To be added.

#### ProcessKey(KeyEvent)

##### Declaration

    public override bool ProcessKey (Terminal.Gui.KeyEvent keyEvent);

##### Parameters

Type | Name | Description
--- | --- | ---
KeyEvent | keyEvent | Contains the details about the key that produced the event.

##### Returns

Type | Description
--- | ---
System.Boolean | To be added.

#### Redraw(Rect)

Performs a redraw of this view and its subviews, only redraws the views that have been flagged for a re-display.

##### Declaration

    public virtual void Redraw (Terminal.Gui.Rect region);

##### Parameters

Type | Name | Description
--- | --- | ---
Rect | region | The region to redraw, this is relative to the view itself.

##### Remarks

Views should set the color that they want to use on entry, as otherwise this will inherit the last color that was set globaly on the driver.

#### Remove(View)

Removes a widget from this container.

##### Declaration

    public virtual void Remove (Terminal.Gui.View view);

##### Parameters

Type | Name | Description
--- | --- | ---
View | view | To be added.

#### RemoveAll()

Removes all the widgets from this container.

##### Declaration

    public virtual void RemoveAll ();

#### ScreenToView(Int32, Int32)

Converts a point from screen coordinates into the view coordinate space.

##### Declaration

    public Terminal.Gui.Point ScreenToView (int x, int y);

##### Parameters

Type | Name | Description
--- | --- | ---
System.Int32 | x | X screen-coordinate point.
System.Int32 | y | Y screen-coordinate point.

##### Returns

Type | Description
--- | ---
Point | The mapped point.

#### SetClip(Rect)

Sets the clipping region to the specified region, the region is view-relative

##### Declaration

    public Terminal.Gui.Rect SetClip (Terminal.Gui.Rect rect);

##### Parameters

Type | Name | Description
--- | --- | ---
Rect | rect | Rectangle region to clip into, the region is view-relative.

##### Returns

Type | Description
--- | ---
Rect | The previous clip region.

#### SetFocus(View)

Focuses the specified sub-view.

##### Declaration

    public void SetFocus (Terminal.Gui.View view);

##### Parameters

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

#### SetNeedsDisplay()

Invoke to flag that this view needs to be redisplayed, by any code that alters the state of the view.

##### Declaration

    public void SetNeedsDisplay ();

#### SetNeedsDisplay(Rect)

Flags the specified rectangle region on this view as needing to be repainted.

##### Declaration

    public void SetNeedsDisplay (Terminal.Gui.Rect region);

##### Parameters

Type | Name | Description
--- | --- | ---
Rect | region | The region that must be flagged for repaint.

#### ToString()

Returns a System.String that represents the current View.

##### Declaration

    public override string ToString ();

##### Returns

Type | Description
--- | ---
System.String | A System.String that represents the current View.