Show / Hide Table of Contents

Class ControlBase

Base class for all controls.

Inheritance
object
ControlBase
ButtonBase
ColorBar
ColorPicker
CompositeControl
DrawingArea
HueBar
Label
ProgressBar
ScrollBar
TextBox
Inherited Members
object.GetType()
object.MemberwiseClone()
object.ToString()
object.Equals(object)
object.Equals(object, object)
object.ReferenceEquals(object, object)
object.GetHashCode()
Namespace: SadConsole.UI.Controls
Assembly: SadConsole.dll
Syntax
[DataContract]
public abstract class ControlBase

Constructors

ControlBase(int, int)

Creates a control.

Declaration
protected ControlBase(int width, int height)
Parameters
Type Name Description
int width
int height

Fields

MouseState_EnteredWithButtonDown

A cached value determined by OnMouseEnter(ControlMouseState). true when the mouse entered the control's bounds with the mouse button down.

Declaration
protected bool MouseState_EnteredWithButtonDown
Field Value
Type Description
bool

MouseState_IsMouseLeftDown

A cached value determined by OnMouseIn(ControlMouseState). true when the left mouse button is down.

Declaration
protected bool MouseState_IsMouseLeftDown
Field Value
Type Description
bool

MouseState_IsMouseOver

A cached value determined by OnMouseEnter(ControlMouseState). true when the mouse is over the bounds defined by MouseArea .

Declaration
protected bool MouseState_IsMouseOver
Field Value
Type Description
bool

MouseState_IsMouseRightDown

A cached value determined by OnMouseIn(ControlMouseState). true when the right mouse button is down.

Declaration
protected bool MouseState_IsMouseRightDown
Field Value
Type Description
bool

Properties

AbsolutePosition

Gets the position of this control based on the control's Position and the position of the Parent.

Declaration
public Point AbsolutePosition { get; }
Property Value
Type Description
Point

AlternateFont

An alternate font used to render this control.

Declaration
[DataMember]
public IFont? AlternateFont { get; set; }
Property Value
Type Description
IFont

Bounds

The area of the host this control covers.

Declaration
public Rectangle Bounds { get; }
Property Value
Type Description
Rectangle

CanFocus

true to indicate this control can be focused, generally by clicking on the control or tabbing with the keyboard. Otherwise false.

Declaration
[DataMember]
public bool CanFocus { get; set; }
Property Value
Type Description
bool

CanResize

When true, indicates that this control can be resized with the Resize(int, int) method; otherwise false.

Declaration
[DataMember]
public bool CanResize { get; protected set; }
Property Value
Type Description
bool

FocusOnMouseClick

Gets or sets whether or not this control will become focused when the mouse is clicked.

Declaration
[DataMember]
public bool FocusOnMouseClick { get; set; }
Property Value
Type Description
bool

Height

The height of the control.

Declaration
public int Height { get; protected set; }
Property Value
Type Description
int

IsDirty

Indicates whether or not this control is dirty and should be redrawn.

Declaration
public bool IsDirty { get; set; }
Property Value
Type Description
bool

IsEnabled

Gets or sets whether or not this control is enabled.

Declaration
[DataMember]
public bool IsEnabled { get; set; }
Property Value
Type Description
bool

IsFocused

Gets or sets whether or not this control is focused.

Declaration
public bool IsFocused { get; set; }
Property Value
Type Description
bool

IsMouseButtonStateClean

When true, indicates the mouse button state has only been set with this control and not another; otherwise false.

Declaration
public bool IsMouseButtonStateClean { get; }
Property Value
Type Description
bool
Remarks

This property is only set when the mouse enters the control with the buttons pressed. Once the buttons are let go, the mouse is considered clean for this control.

IsVisible

Indicates whether or not this control is visible.

Declaration
[DataMember]
public bool IsVisible { get; set; }
Property Value
Type Description
bool

MouseArea

The relative region the of the control used for mouse input.

Declaration
[DataMember]
public Rectangle MouseArea { get; set; }
Property Value
Type Description
Rectangle

Name

Represents a name to identify a control by.

Declaration
[DataMember]
public string? Name { get; init; }
Property Value
Type Description
string

Parent

Gets or sets the parent container of this control.

Declaration
public IContainer? Parent { get; set; }
Property Value
Type Description
IContainer

Position

The relative position of this control.

Declaration
[DataMember]
public Point Position { get; set; }
Property Value
Type Description
Point

State

The state of the control.

Declaration
public ControlStates State { get; protected set; }
Property Value
Type Description
ControlStates

Surface

The cell data to render the control. Controlled by a theme.

Declaration
public ICellSurface Surface { get; set; }
Property Value
Type Description
ICellSurface

TabIndex

Sets the tab index of this control.

Declaration
[DataMember]
public int TabIndex { get; set; }
Property Value
Type Description
int

TabStop

Indicates whether or not this control can be tabbed to.

Declaration
[DataMember]
public bool TabStop { get; set; }
Property Value
Type Description
bool

Tag

A user-definable data object.

Declaration
public object? Tag { get; set; }
Property Value
Type Description
object

ThemeState

The theme of the control based on its state.

Declaration
public ThemeStates ThemeState { get; set; }
Property Value
Type Description
ThemeStates

UseKeyboard

true to allow this control to respond to keyboard interactions when focused.

Declaration
[DataMember]
public bool UseKeyboard { get; set; }
Property Value
Type Description
bool

UseMouse

true to allow this control to respond to mouse interactions.

Declaration
[DataMember]
public bool UseMouse { get; set; }
Property Value
Type Description
bool

Width

The width of the control.

Declaration
public int Width { get; protected set; }
Property Value
Type Description
int

Methods

CreateControlSurface()

Generates the surface to be used by this control. This method is called internally to assign the Surface property a value.

Declaration
protected virtual ICellSurface CreateControlSurface()
Returns
Type Description
ICellSurface

A surface that should be assigned to the Surface property.

DetermineState()

Sets the appropriate theme for the control based on the current state of the control.

Declaration
public virtual void DetermineState()
Remarks

Called by the control as the mouse state changes, like when the mouse is clicked on top of the control or leaves the area of the control. This method is implemented by each derived control.

FindThemeColors()

Returns the colors assigned to this control, the parent, or the library default.

Declaration
public Colors FindThemeColors()
Returns
Type Description
Colors

The found colors.

FindThemeFont()

Returns the AlternateFont. If null, returns the host's console font or the default engine font.

Declaration
public IFont FindThemeFont()
Returns
Type Description
IFont

HasThemeColors()

When true, indicates the control has custom theme colors assigned to it; othwerise false.

Declaration
public bool HasThemeColors()
Returns
Type Description
bool

LostMouse(MouseScreenObjectState)

Called to trigger the state of losing mouse focus.

Declaration
public void LostMouse(MouseScreenObjectState state)
Parameters
Type Name Description
MouseScreenObjectState state

The mouse state.

OnFocused()

Called when the control is focused.

Declaration
protected virtual void OnFocused()

OnIsDirtyChanged()

Called when the IsDirty property changes value.

Declaration
protected virtual void OnIsDirtyChanged()

OnLeftMouseClicked(ControlMouseState)

Called when the left mouse button is clicked. Raises the MouseButtonClicked event and calls the DetermineState() method.

Declaration
protected virtual void OnLeftMouseClicked(ControlBase.ControlMouseState state)
Parameters
Type Name Description
ControlBase.ControlMouseState state

The current mouse data

OnMouseEnter(ControlMouseState)

Called when the mouse first enters the control. Raises the MouseEnter event and calls the DetermineState() method.

Declaration
protected virtual void OnMouseEnter(ControlBase.ControlMouseState state)
Parameters
Type Name Description
ControlBase.ControlMouseState state

The current mouse data

OnMouseExit(ControlMouseState)

Called when the mouse exits the area of the control. Raises the MouseExit event and calls the DetermineState() method.

Declaration
protected virtual void OnMouseExit(ControlBase.ControlMouseState state)
Parameters
Type Name Description
ControlBase.ControlMouseState state

The current mouse data

OnMouseIn(ControlMouseState)

Called as the mouse moves around the control area. Raises the MouseMove event and calls the DetermineState() method.

Declaration
protected virtual void OnMouseIn(ControlBase.ControlMouseState state)
Parameters
Type Name Description
ControlBase.ControlMouseState state

The current mouse data

OnParentChanged()

Called when the parent property is changed.

Declaration
protected virtual void OnParentChanged()

OnPositionChanged()

Called when the control changes position.

Declaration
protected virtual void OnPositionChanged()

OnResized()

Called when Resize(int, int) was called.

Declaration
protected virtual void OnResized()

OnRightMouseClicked(ControlMouseState)

Called when the right mouse button is clicked. Raises the MouseButtonClicked event and calls the DetermineState() method.

Declaration
protected virtual void OnRightMouseClicked(ControlBase.ControlMouseState state)
Parameters
Type Name Description
ControlBase.ControlMouseState state

The current mouse data.

OnStateChanged(ControlStates, ControlStates)

Called when the State changes. Sets the IsDirty to true.

Declaration
protected virtual void OnStateChanged(ControlStates oldState, ControlStates newState)
Parameters
Type Name Description
ControlStates oldState

The original state.

ControlStates newState

The new state.

OnSurfaceChanged(ICellSurface, ICellSurface)

Called when the Surface property is set.

Declaration
protected virtual void OnSurfaceChanged(ICellSurface oldSurface, ICellSurface newSurface)
Parameters
Type Name Description
ICellSurface oldSurface

The previous surface instance.

ICellSurface newSurface

The new surface instance.

OnUnfocused()

Called when the control loses focus.

Declaration
protected virtual void OnUnfocused()

PlaceRelativeTo(ControlBase, Types, int)

Places this control relative to another, taking into account the bounds of the control.

Declaration
public void PlaceRelativeTo(ControlBase control, Direction.Types direction, int padding = 1)
Parameters
Type Name Description
ControlBase control

The other control to place this one relative to.

Direction.Types direction

The direction this control should be placed.

int padding

Additional space between the controls after placement.

Remarks

If this control hasn't been added to the parent of control, it will be added.

ProcessKeyboard(Keyboard)

Called when the keyboard is used on this control.

Declaration
public virtual bool ProcessKeyboard(Keyboard state)
Parameters
Type Name Description
Keyboard state

The state of the keyboard.

Returns
Type Description
bool

ProcessMouse(MouseScreenObjectState)

Checks if the mouse is the control and calls the appropriate mouse methods.

Declaration
public virtual bool ProcessMouse(MouseScreenObjectState state)
Parameters
Type Name Description
MouseScreenObjectState state

Mouse information.

Returns
Type Description
bool

True when the control is enabled, set to use the mouse and the mouse is over it, otherwise false.

RefreshThemeStateColors(Colors)

Updates the ThemeState by calling RefreshTheme(Colors) with the provided colors. Override this method to adjust how colors are used by the ThemeState.

Declaration
protected virtual void RefreshThemeStateColors(Colors colors)
Parameters
Type Name Description
Colors colors

The colors to apply to the theme state.

Resize(int, int)

Resizes the control if the CanResize property is true.

Declaration
public virtual void Resize(int width, int height)
Parameters
Type Name Description
int width

The desired width of the control.

int height

The desired height of the control.

SetThemeColors(Colors?)

Sets the theme colors used by this control. When null, indicates this control should read the theme colors from the parent.

Declaration
public void SetThemeColors(Colors? value)
Parameters
Type Name Description
Colors value

The colors to use with this control.

UpdateAndRedraw(TimeSpan)

Redraws the control if applicable.

Declaration
public abstract void UpdateAndRedraw(TimeSpan time)
Parameters
Type Name Description
TimeSpan time

The duration of thecurrent frame.

Events

Focused

Raised when the IsFocused is set to true.

Declaration
public event EventHandler<EventArgs>? Focused
Event Type
Type Description
EventHandler<EventArgs>

IsDirtyChanged

Raised when the IsDirty property changes.

Declaration
public event EventHandler<EventArgs>? IsDirtyChanged
Event Type
Type Description
EventHandler<EventArgs>

MouseButtonClicked

Raised when a mouse button is clicked while the mouse is over this control.

Declaration
public event EventHandler<ControlBase.ControlMouseState>? MouseButtonClicked
Event Type
Type Description
EventHandler<ControlBase.ControlMouseState>

MouseEnter

Raised when the mouse enters this control.

Declaration
public event EventHandler<ControlBase.ControlMouseState>? MouseEnter
Event Type
Type Description
EventHandler<ControlBase.ControlMouseState>

MouseExit

Raised when the mouse exits this control.

Declaration
public event EventHandler<ControlBase.ControlMouseState>? MouseExit
Event Type
Type Description
EventHandler<ControlBase.ControlMouseState>

MouseMove

Raised when the mouse is moved over this control.

Declaration
public event EventHandler<ControlBase.ControlMouseState>? MouseMove
Event Type
Type Description
EventHandler<ControlBase.ControlMouseState>

PositionChanged

Raised when the Position property changes value.

Declaration
public event EventHandler<EventArgs>? PositionChanged
Event Type
Type Description
EventHandler<EventArgs>

Unfocused

Raised when the IsFocused is set to false.

Declaration
public event EventHandler<EventArgs>? Unfocused
Event Type
Type Description
EventHandler<EventArgs>

Extension Methods

ExtensionsSystem.GetDebuggerDisplayValue(object)
In this article

Back to top

Back to top Generated by DocFX