xtd 1.0.0
Loading...
Searching...
No Matches
xtd::forms::control Class Reference
Inheritance diagram for xtd::forms::control:
xtd::forms::component xtd::forms::iwin32_window xtd::icomparable< control > xtd::iequatable< control > xtd::isynchronize_invoke xtd::object xtd::interface xtd::interface xtd::extensions::comparison_operators< control, icomparable< control > > xtd::interface xtd::extensions::equality_operators< control, iequatable< control > > xtd::interface xtd::forms::animation xtd::forms::button_base xtd::forms::collapsible_panel xtd::forms::color_picker xtd::forms::date_time_picker xtd::forms::dot_matrix_display xtd::forms::font_picker xtd::forms::group_box xtd::forms::label xtd::forms::lcd_label xtd::forms::list_control xtd::forms::loading_indicator xtd::forms::month_calendar xtd::forms::picture_box xtd::forms::progress_bar xtd::forms::scroll_bar xtd::forms::scrollable_control xtd::forms::seven_segment_display xtd::forms::splitter xtd::forms::status_bar xtd::forms::tab_control xtd::forms::text_box_base xtd::forms::tool_bar xtd::forms::track_bar

Definition

Defines the base class for controls, which are components with visual representation.

Header
#include <xtd/forms/control>
Namespace
xtd::forms
Library
xtd.forms
Remarks
To create your own control class, inherit from the xtd::forms::user_control, xtd::forms::control classes, or from the other Windows Forms provided controls.
The xtd::forms::control class implements very basic functionality required by classes that display information to the user. It handles user input through the keyboard and pointing devices. It handles message routing and security. It defines the bounds of a control (its position and size), although it does not implement painting. It provides a window handle (hWnd).
Windows Forms controls use ambient properties so child controls can appear like their surrounding environment. An ambient property is a control property that, if not set, is retrieved from the xtd::forms::control::parent control. If the control does not have a parent, and the property is not set, the control attempts to determine the value of the ambient property through the site property. If the control is not sited, if the site does not support ambient properties, or if the property is not set on the ambient_properties, the control uses its own default values. Typically, an ambient property represents a characteristic of a control, such as xtd::forms::control::back_color, that is communicated to a child control. For example, a button will have the same xtd::forms::control::back_color as its parent form by default. Ambient properties provided by the control class include: xtd::forms::control::cursor, xtd::forms::control::font, xtd::forms::control::back_color, xtd::forms::control::fore_color, and xtd::forms::control::right_to_left.
The majority of the controls in the xtd::forms namespace use the underlying Windows common control as a base to build on.
Examples
The following code example demonstrates the use of control control.
#include <xtd/xtd>
namespace control_example {
class form1 : public form {
public:
form1() {
text("Control example");
control1.parent(*this);
control1.cursor(cursors::hand());
control1.back_color(colors::spring_green());
control1.location({50, 50});
control1.size({100, 50});
control1.click += delegate_ {
control1.back_color(control1.back_color() == colors::spring_green() ? colors::orange_red() : colors::spring_green());
};
}
private:
control control1;
};
}
auto main() -> int {
application::run(control_example::form1 {});
}
friend class form
The form data allows you to specify the box of a form control.
Definition control.hpp:1854
virtual auto text() const noexcept -> const xtd::string &
Gets the text associated with this control.
static auto hand() -> xtd::forms::cursor
Gets the hand cursor, typically used when hovering over a Web link.
#define delegate_
The declaration of a delegate type is similar to a method signature. It has a return value and any nu...
Definition delegate.hpp:1018
@ control
The left or right CTRL modifier key.
Definition console_modifiers.hpp:28

Classes

class  control_collection
 Represents a collection of controls. More...

Public Aliases

using context_menu_ref
 Represent an xtd::forms::context_menu reference.

Public Events

xtd::event< control, xtd::event_handlerauto_size_changed
 Occurs when the value of the xtd::forms::control::auto_size property changes.
xtd::event< control, xtd::event_handlerback_color_changed
 Occurs when the value of the xtd::forms::control::back_color property changes.
xtd::event< control, xtd::event_handlerbackground_image_changed
 Occurs when the value of the xtd::forms::control::background_image property changes.
xtd::event< control, xtd::event_handlerbackground_image_layout_changed
 Occurs when the value of the xtd::forms::control::background_image_layout property changes.
xtd::event< control, xtd::event_handlercontrol_appearance_changed
 Occurs when the value of the xtd::forms::control::control_appearance property changes.
xtd::event< control, xtd::event_handlerclick
 Occurs when the xtd::forms::control is clicked.
xtd::event< control, xtd::event_handlerclient_size_changed
 Occurs when the value of the xtd::forms::control::client_size property changes.
xtd::event< control, xtd::event_handlercursor_changed
 Occurs when the value of the xtd::forms::control::cursor property changes.
xtd::event< control, xtd::forms::control_event_handlercontrol_added
 Occurs when a new xtd::forms::control::control is added to the xtd::forms::control::control_collection.
xtd::event< control, xtd::forms::control_event_handlercontrol_removed
 Occurs when a new xtd::forms::control:: is removed to the xtd::forms::control::control_collection.
xtd::event< control, xtd::event_handlerdock_changed
 Occurs when the value of the xtd::forms::control::dock property changes.
xtd::event< control, xtd::event_handlerdouble_click
 Occurs when the xtd::forms::control is double-clicked.
xtd::event< control, xtd::event_handlergot_focus
 Occurs when the xtd::forms::control receives focus.
xtd::event< control, xtd::event_handlerhandle_created
 Occurs when a handle is created for the xtd::forms::control.
xtd::event< control, xtd::event_handlerhandle_destroyed
 Occurs when the control's handle is in the process of being destroyed.
xtd::event< control, xtd::event_handlerenabled_changed
 Occurs when the value of the xtd::forms::control::enabled property changes.
xtd::event< control, xtd::event_handlerfore_color_changed
 Occurs when the value of the xtd::forms::control::fore_color property changes.
xtd::event< control, xtd::event_handlerfont_changed
 Occurs when the value of the xtd::forms::control::font property changes.
xtd::event< control, xtd::forms::help_event_handlerhelp_requested
 Occurs when the user requests help for a xtd::forms::control.
xtd::event< control, xtd::forms::key_event_handlerkey_down
 Occurs when a key is pressed while the xtd::forms::control has focus.
xtd::event< control, xtd::forms::key_press_event_handlerkey_press
 Occurs when a character. space or backspace key is pressed while the xtd::forms::control has focus.
xtd::event< control, xtd::forms::key_event_handlerkey_up
 Occurs when a key is released while the xtd::forms::control has focus.
xtd::event< control, xtd::event_handlerlayout
 Occurs when a xtd::forms::control should reposition its child controls.
xtd::event< control, xtd::event_handlerlocation_changed
 Occurs when the value of the xtd::forms::control::location property changes.
xtd::event< control, xtd::event_handlerlost_focus
 Occurs when the xtd::forms::control loses focus.
xtd::event< control, xtd::forms::mouse_event_handlermouse_click
 Occurs when the xtd::forms::control is clicked by the mouse.
xtd::event< control, xtd::forms::mouse_event_handlermouse_double_click
 Occurs when the xtd::forms::control is double clicked by the mouse.
xtd::event< control, xtd::forms::mouse_event_handlermouse_down
 Occurs when the mouse pointer is over the xtd::forms::control and a mouse button is pressed.
xtd::event< control, xtd::event_handlermouse_enter
 Occurs when the mouse pointer enters the xtd::forms::control.
xtd::event< control, xtd::forms::mouse_event_handlermouse_horizontal_wheel
 Occurs when the mouse horizontal wheel moves while the xtd::forms::control has focus.
xtd::event< control, xtd::event_handlermouse_leave
 Occurs when the mouse pointer leaves the xtd::forms::control.
xtd::event< control, xtd::forms::mouse_event_handlermouse_move
 Occurs when the mouse pointer is moved over the xtd::forms::control.
xtd::event< control, xtd::forms::mouse_event_handlermouse_up
 Occurs when the mouse pointer is over the xtd::forms::control and a mouse button is released.
xtd::event< control, xtd::forms::mouse_event_handlermouse_wheel
 Occurs when the mouse wheel moves while the xtd::forms::control has focus.
xtd::event< control, xtd::event_handlermove
 Occurs when the control is moved.
xtd::event< control, xtd::forms::paint_event_handlerpaint
 Occurs when the xtd::forms::control is redrawn.
xtd::event< control, xtd::event_handlerparent_changed
 Occurs when the value of the xtd::forms::control::parent property changes.
xtd::event< control, xtd::event_handlerregion_changed
 Occurs when the value of the xtd::forms::control::region property changes.
xtd::event< control, xtd::event_handlerresize
 Occurs when the xtd::forms::control is resized.
xtd::event< control, xtd::event_handlerright_to_left_changed
 Occurs when the value of the xtd::forms::control::right_to_left property changes.
xtd::event< control, xtd::event_handlersize_changed
 Occurs when the value of the xtd::forms::control::size property changes.
xtd::event< control, xtd::event_handlerstyle_sheet_changed
 Occurs when the value of the xtd::forms::control::style_sheet property changes or when xtd::application::style_sheet property changes.
xtd::event< control, xtd::event_handlersystem_colors_changed
 Occurs when the xtd::drwing::system_colors changes.
xtd::event< control, xtd::event_handlertab_stop_changed
 Occurs when the xtd::forms::control::tab_stop property value changes.
xtd::event< control, xtd::event_handlertext_changed
 Occurs when the value of the xtd::forms::control::text property changes.
xtd::event< control, xtd::event_handlervisible_changed
 Occurs when the value of the xtd::forms::control::visible property changes.

Public Constructors

 control ()
 Initializes a new instance of the xtd::forms::control class with default settings.
 control (const xtd::string &text)
 Initializes a new instance of the xtd::forms::control class with specific text.
 control (const control &parent, const xtd::string &text)
 Initializes a new instance of the xtd::forms::control class as a child control, with specific text.
 control (const xtd::string &text, int32 left, int32 top, int32 width, int32 height)
 Initializes a new instance of the control class with specific text, size, and location.
 control (const control &parent, const xtd::string &text, int32 left, int32 top, int32 width, int32 height)
 Initializes a new instance of the xtd::forms::control class as a child control, with specific text, size, and location.

Public Properties

virtual auto anchor () const noexcept -> xtd::forms::anchor_styles
 Gets the edges of the container to which a control is bound and determines how a control is resized with its parent.
virtual auto anchor (xtd::forms::anchor_styles value) -> control &
 Gets the edges of the container to which a control is bound and determines how a control is resized with its parent.
virtual auto auto_scroll_point () const noexcept -> xtd::drawing::point
 Gets where this control is scrolled to in scroll_control_into_view(control).
virtual auto auto_size () const noexcept -> bool
 Gets a value that indicates whether the control resizes based on its contents.
virtual auto auto_size (bool value) -> control &
 Sets a value that indicates whether the control resizes based on its contents.
virtual auto back_color () const noexcept -> xtd::drawing::color
 Gets the background color for the control.
virtual auto back_color (const xtd::drawing::color &value) -> control &
 Sets the background color for the control.
virtual auto back_color (xtd::null_ptr) -> control &
 Resets the background color for the control.
virtual auto background_image () const noexcept -> const xtd::drawing::image &
 Gets the background image displayed in the control.
virtual auto background_image (const xtd::drawing::image &value) -> control &
 Sets the background image displayed in the control.
virtual auto background_image_layout () const noexcept -> xtd::forms::image_layout
 Gets the background image layout as defined in the xtd::forms::image_layout enumeration.
virtual auto background_image_layout (xtd::forms::image_layout value) -> control &
 Sets the background image layout as defined in the xtd::forms::image_layout enumeration.
virtual auto bottom () const noexcept -> xtd::int32
 Gets the distance, in pixels, between the bottom edge of the control and the top edge of its container's client area.
virtual auto bounds () const noexcept -> xtd::drawing::rectangle
 Gets the size and location of the control including its nonclient elements, in pixels, relative to the parent control.
virtual auto bounds (const xtd::drawing::rectangle &value) -> control &
 Sets the size and location of the control including its nonclient elements, in pixels, relative to the parent control.
virtual auto can_focus () const noexcept -> bool
 Gets a value indicating whether the control can receive focus.
virtual auto can_select () const noexcept -> bool
 Gets a value indicating whether the control can be selected.
auto can_raise_events () const noexcept -> bool override
 Determines if events can be raised on the control.
virtual auto client_rectangle () const noexcept -> const xtd::drawing::rectangle &
 Gets the rectangle that represents the client area of the control.
virtual auto client_size () const noexcept -> const xtd::drawing::size &
 Gets the height and width of the client area of the control.
virtual auto client_size (const xtd::drawing::size &value) -> control &
 Sets the height and width of the client area of the control.
virtual auto company_name () const noexcept -> xtd::string
 Gets the name of the company or creator of the application containing the control.
virtual auto context_menu () const noexcept -> std::optional< context_menu_ref >
 Gets the xtd::forms::context_menu that is displayed in the control.
virtual auto context_menu (xtd::forms::context_menu &value) -> control &
 Sets the xtd::forms::context_menu that is displayed in the control.
virtual auto context_menu (xtd::null_ptr) -> control &
 Resets the xtd::forms::context_menu that is displayed in the control.
virtual auto control_appearance () const noexcept -> xtd::forms::control_appearance
 Gets control appearance.
virtual auto control_appearance (xtd::forms::control_appearance value) -> control &
 Sets control appearance.
virtual auto controls () noexcept -> control_collection &
 Gets the collection of controls contained within the control.
virtual auto controls () const noexcept -> const control_collection &
 Gets the collection of controls contained within the control.
virtual auto created () const noexcept -> bool
 Gets a value indicating whether the control has been created.
virtual auto cursor () const noexcept -> xtd::forms::cursor
 Gets the cursor that is displayed when the mouse pointer is over the control.
virtual auto cursor (const xtd::forms::cursor &value) -> control &
 Sets the cursor that is displayed when the mouse pointer is over the control.
virtual auto cursor (xtd::null_ptr) -> control &
 Resets the cursor that is displayed when the mouse pointer is over the control.
virtual auto display_rectangle () const noexcept -> xtd::drawing::rectangle
 Gets the rectangle that represents the display area of the control.
virtual auto dock () const noexcept -> xtd::forms::dock_style
 Gets which control borders are docked to its parent control and determines how a control is resized with its parent.
virtual auto dock (xtd::forms::dock_style value) -> control &
 Sets which control borders are docked to its parent control and determines how a control is resized with its parent.
virtual auto double_buffered () const noexcept -> bool
 Gets a value indicating whether this control should redraw its surface using a secondary buffer to reduce or prevent flicker.
virtual auto double_buffered (bool value) -> control &
 Sets a value indicating whether this control should redraw its surface using a secondary buffer to reduce or prevent flicker.
virtual auto enabled () const noexcept -> bool
 Gets a value indicating whether the control can respond to user interaction.
virtual auto enabled (bool value) -> control &
 Sets a value indicating whether the control can respond to user interaction.
virtual auto focused () const noexcept -> bool
 Gets a value indicating whether the control has input focus.
virtual auto font () const noexcept -> xtd::drawing::font
 Gets the font of the text displayed by the control.
virtual auto font (const xtd::drawing::font &value) -> control &
 Sets the font of the text displayed by the control.
virtual auto font (xtd::null_ptr) -> control &
 Resets the font of the text displayed by the control.
virtual auto fore_color () const noexcept -> xtd::drawing::color
 Gets the foreground color of the control.
virtual auto fore_color (const xtd::drawing::color &value) -> control &
 Sets the foreground color of the control.
virtual auto fore_color (xtd::null_ptr) -> control &
 Resets the foreground color of the control.
auto handle () const -> xtd::intptr override
 Gets the window handle that the control is bound to.
virtual auto height () const noexcept -> xtd::int32
 Gets the height of the control.
virtual auto height (xtd::int32 value) -> control &
 Sets the height of the control.
auto invoke_required () const noexcept -> bool override
 Gets a value indicating whether the caller must call an invoke method when making method calls to the control because the caller is on a different thread than the one the control was created on.
auto is_handle_created () const noexcept -> bool
 Gets a value indicating whether the control has a handle associated with it.
virtual auto left () const noexcept -> xtd::int32
 Gets the distance, in pixels, between the left edge of the control and the left edge of its container's client area.
virtual auto left (xtd::int32 value) -> control &
 Sets the distance, in pixels, between the left edge of the control and the left edge of its container's client area.
virtual auto location () const noexcept -> xtd::drawing::point
 Gets the coordinates of the upper-left corner of the control relative to the upper-left corner of its container.
virtual auto location (const xtd::drawing::point &value) -> control &
 Sets the coordinates of the upper-left corner of the control relative to the upper-left corner of its container.
virtual auto margin () const noexcept -> xtd::forms::padding
 Gets the space between controls.
virtual auto margin (const xtd::forms::padding &value) -> control &
 Sets the space between controls.
virtual auto maximum_client_size () const noexcept -> const xtd::drawing::size &
 Gets the client size that is the upper limit that xtd::forms::control::get_preferred_size can specify.
virtual auto maximum_client_size (const xtd::drawing::size &size) -> control &
 Sets the client size that is the upper limit that xtd::forms::control::get_preferred_size can specify.
virtual auto maximum_size () const noexcept -> const xtd::drawing::size &
 Gets the size that is the upper limit that xtd::forms::control::get_preferred_size can specify.
virtual auto maximum_size (const xtd::drawing::size &value) -> control &
 Sets the size that is the upper limit that xtd::forms::control::get_preferred_size can specify.
virtual auto minimum_client_size () const noexcept -> const xtd::drawing::size &
 Gets the client size that is the lower limit that xtd::forms::control::get_preferred_size can specify.
virtual auto minimum_client_size (const xtd::drawing::size &value) -> control &
 Sets the client size that is the lower limit that xtd::forms::control::get_preferred_size can specify.
virtual auto minimum_size () const noexcept -> const xtd::drawing::size &
 Gets the size that is the lower limit that xtd::forms::control::get_preferred_size can specify.
virtual auto minimum_size (const xtd::drawing::size &value) -> control &
 Sets the size that is the lower limit that xtd::forms::control::get_preferred_size can specify.
auto native_handle () const noexcept -> xtd::intptr
 Gets the native handle that the control is bound to.
virtual auto name () const noexcept -> const xtd::string &
 Gets the name of the control.
virtual auto name (const xtd::string &value) -> control &
 Sets the name of the control.
virtual auto padding () const noexcept -> xtd::forms::padding
 Gets padding within the control.
virtual auto padding (const xtd::forms::padding &value) -> control &
 Sets padding within the control.
virtual auto parent () const noexcept -> std::optional< xtd::forms::control_ref >
 Gets the parent container of the control.
virtual auto parent (const control &value) -> control &
 Sets the parent container of the control.
virtual auto parent (xtd::null_ptr) -> control &
 Resets the parent container of the control.
virtual auto product_name () const noexcept -> xtd::string
 Gets the product name of the assembly containing the control.
auto recreating_handle () const noexcept -> bool
 Gets a value indicating whether the control is currently re-creating its handle.
virtual auto region () const noexcept -> const xtd::drawing::region &
 Gets the window region associated with the control.
virtual auto region (const xtd::drawing::region &value) -> control &
 Sets the window region associated with the control.
virtual auto right () const noexcept -> xtd::int32
 Gets the distance, in pixels, between the right edge of the control and the left edge of its container's client area.
virtual auto right_to_left () const noexcept -> xtd::forms::right_to_left
 Gets a value indicating whether control's elements are aligned to support locales using right-to-left fonts.
virtual auto right_to_left (xtd::forms::right_to_left value) -> control &
 Sets a value indicating whether control's elements are aligned to support locales using right-to-left fonts.
virtual auto right_to_left (xtd::null_ptr) -> control &
 Resets a value indicating whether control's elements are aligned to support locales using right-to-left fonts.
virtual auto size () const noexcept -> xtd::drawing::size
 Gets the height and width of the control.
virtual auto size (const xtd::drawing::size &value) -> control &
 Sets the height and width of the control.
virtual auto style_sheet () const noexcept -> xtd::forms::style_sheets::style_sheet
 Gets the contol style sheet.
virtual auto style_sheet (const xtd::forms::style_sheets::style_sheet &value) -> control &
 Sets the contol style sheet.
virtual auto style_sheet (const xtd::string &value) -> control &
 Sets the contol style sheet.
virtual auto style_sheet (xtd::null_ptr) -> control &
 Resets the contol style sheet.
virtual auto tab_stop () const noexcept -> bool
 Gets a value indicating whether the user can give the focus to this control using the TAB key.
virtual auto tab_stop (bool value) -> control &
 Sets a value indicating whether the user can give the focus to this control using the TAB key.
virtual auto tag () const noexcept -> const xtd::any_object &
 Gets the object that contains data about the control.
virtual auto tag (const xtd::any_object &value) -> control &
 Sets the object that contains data about the control.
virtual auto text () const noexcept -> const xtd::string &
 Gets the text associated with this control.
virtual auto text (const xtd::string &value) -> control &
 Sets the text associated with this control.
auto toolkit_handle () const noexcept -> xtd::intptr
 Gets the toolkit handle that the control is bound to.
virtual auto top () const noexcept -> xtd::int32
 Gets the distance, in pixels, between the top edge of the control and the top edge of its container's client area.
virtual auto top (xtd::int32 value) -> control &
 Sets the distance, in pixels, between the top edge of the control and the top edge of its container's client area.
virtual auto top_level_control () const noexcept -> std::optional< xtd::forms::control_ref >
 Gets the parent control that is not parented by another Windows Forms control. Typically, this is the outermost Form that the control is contained in.
virtual auto visible () const noexcept -> bool
 Gets a value indicating whether the control and all its child controls are displayed.
virtual auto visible (bool value) -> control &
 Sets a value indicating whether the control and all its child controls are displayed.
virtual auto width () const noexcept -> xtd::int32
 Gets the width of the control.
virtual auto width (xtd::int32 value) -> control &
 Sets the width of the control.

Public Methods

auto begin_invoke (xtd::delegate< void()> method) -> xtd::async_result override
 Executes the specified delegate asynchronously on the thread that the control's underlying handle was created on.
auto begin_invoke (xtd::delegate< void(xtd::array< xtd::any_object >)> method, const xtd::array< xtd::any_object > &args) -> xtd::async_result override
 Executes the specified delegate asynchronously with the specified arguments, on the thread that the control's underlying handle was created on.
virtual auto bring_to_front () -> void
 Brings the control to the front of the z-order.
auto compare_to (const control &value) const noexcept -> xtd::int32 override
auto create_control () -> void
 Forces the creation of the visible control, including the creation of the handle and any visible child controls.
auto create_graphics () const -> xtd::drawing::graphics
 Creates the xtd::drawing::graphics for the control.
virtual auto destroy_control () -> void
 Forces the destruction of the visible control, including the destruction of the handle and any visible child controls.
auto end_invoke (xtd::async_result async) -> std::optional< xtd::object_ref > override
 Retrieves the return value of the asynchronous operation represented by the async_result_invoke passed.
auto equals (const xtd::object &obj) const noexcept -> bool override
 Determines whether the specified object is equal to the current object.
auto equals (const control &value) const noexcept -> bool override
 Determines whether the specified object is equal to the current object.
auto focus () -> bool
 Sets input focus to the control.
auto get_auto_size_mode () const -> xtd::forms::auto_size_mode
 Gets a value indicating how a control will behave when its auto_size property is enabled.
auto get_child_index (xtd::intptr child) const -> xtd::usize
 Retrieves the index of a control within the control collection.
auto get_child_index (xtd::intptr child, bool &throw_exception) const -> xtd::usize
 Retrieves the index of the specified child control within the control collection, and optionally raises an exception if the specified control is not within the control collection.
auto get_hash_code () const noexcept -> xtd::usize override
 Serves as a hash function for a particular type.
virtual auto hide () -> void
 Conceals the control from the user.
virtual auto invalidate () const -> void
 Invalidates the entire surface of the control and causes the control to be redrawn.
virtual auto invalidate (bool invalidate_children) const -> void
 Invalidates a specific region of the control and causes a paint message to be sent to the control. Optionally, invalidates the child controls assigned to the control.
virtual auto invalidate (const xtd::drawing::rectangle &rect) const -> void
 Invalidates the specified region of the control (adds it to the control's update region, which is the area that will be repainted at the next paint operation), and causes a paint message to be sent to the control.
virtual auto invalidate (const xtd::drawing::rectangle &rect, bool invalidate_children) const -> void
 Invalidates the specified region of the control (adds it to the control's update region, which is the area that will be repainted at the next paint operation), and causes a paint message to be sent to the control. Optionally, invalidates the child controls assigned to the control.
virtual auto invalidate (const xtd::drawing::region &region) const -> void
 Invalidates the specified region of the control (adds it to the control's update region, which is the area that will be repainted at the next paint operation), and causes a paint message to be sent to the control.
virtual auto invalidate (const xtd::drawing::region &region, bool invalidate_children) const -> void
 Invalidates the specified region of the control (adds it to the control's update region, which is the area that will be repainted at the next paint operation), and causes a paint message to be sent to the control. Optionally, invalidates the child controls assigned to the control.
auto invoke (xtd::delegate< void()> method) -> std::optional< xtd::object_ref > override
 Executes the specified delegate on the thread that owns the control's underlying window handle.
auto invoke (xtd::delegate< void(xtd::array< xtd::any_object >)> method, const xtd::array< xtd::any_object > &args) -> std::optional< xtd::object_ref > override
 Executes the specified delegate, on the thread that owns the control's underlying window handle, with the specified list of arguments.
auto invoke (xtd::delegate< void(xtd::array< xtd::any_object >)> method, const xtd::any_object &arg) -> std::optional< xtd::object_ref > override
 Executes the specified delegate, on the thread that owns the control's underlying window handle, with the specified list of arguments.
auto perform_layout () -> void
 Forces the control to apply layout logic to all its child controls.
auto point_to_client (const xtd::drawing::point &p) const -> xtd::drawing::point
 Computes the location of the specified screen point into client coordinates.
auto point_to_screen (const xtd::drawing::point &p) const -> xtd::drawing::point
 Computes the location of the specified client point into screen coordinates.
auto post_message (xtd::intptr hwnd, xtd::int32 msg, xtd::intptr wparam, xtd::intptr lparam) const -> bool
 Places (posts) a message in the message queue with specified hwnd, message, wparam and lparam.
virtual auto pre_process_message (const xtd::forms::message &message) -> bool
 Preprocesses keyboard or input messages within the message loop before they are dispatched.
virtual auto refresh () const -> void
 Forces the control to invalidate its client area and immediately redraw itself and any child controls.
auto resume_layout () -> void
 Resumes usual layout logic.
auto resume_layout (bool perform_layout) -> void
 Resumes usual layout logic, optionally forcing an immediate layout of pending layout requests.
auto send_message (xtd::intptr hwnd, xtd::int32 msg, xtd::intptr wparam, xtd::intptr lparam) const -> xtd::intptr
 Send a message with specified hwnd, message, wparam and lparam.
auto set_auto_size_mode (xtd::forms::auto_size_mode auto_size_modeauto_size_mode) -> void
 Sets a value indicating how a control will behave when its auto_size property is enabled.
auto set_bounds (xtd::int32 x, xtd::int32 y, xtd::int32 width, xtd::int32 height) -> void
 Sets the bounds of the control to the specified location and size.
auto set_bounds (xtd::int32 x, xtd::int32 y, xtd::int32 width, xtd::int32 height, xtd::forms::bounds_specified specified) -> void
 Sets the specified bounds of the control to the specified location and size.
virtual auto show () -> void
 Displays the control to the user.
auto suspend_layout () -> void
 Temporarily suspends the layout logic for the control.
auto to_string () const noexcept -> xtd::string override
 Returns a string containing the name of the control, if any.
virtual auto update () const -> void
 Causes the control to redraw the invalidated regions within its client area.

Operators

auto operator<< (control &child) -> control &
 Add child control.
auto operator>> (control &child) -> control &
 Remove child control.

Public Static Properties

static auto check_for_illegal_cross_thread_calls () noexcept -> bool
 Gets a value indicating whether to catch calls on the wrong thread that access a xtd::forms::contrtol::handle property when an application is being debugged.
static auto check_for_illegal_cross_thread_calls (bool value) -> void
 Sets a value indicating whether to catch calls on the wrong thread that access a xtd::forms::contrtol::handle property when an application is being debugged.
static auto modifier_keys () noexcept -> xtd::forms::keys
 Gets a value indicating which of the modifier keys (SHIFT, CTRL, and ALT) is in a pressed state.
static auto mouse_buttons () noexcept -> xtd::forms::mouse_buttons
 Gets a value indicating which of the mouse buttons is in a pressed state.
static auto mouse_position () noexcept -> xtd::drawing::point
 Gets the position of the mouse cursor in screen coordinates.

Public Static Methods

static auto create () -> control
 A factory to create a specified control.
static auto create (const xtd::drawing::point &location) -> control
 A factory to create a specified control with specified location.
static auto create (const xtd::drawing::point &location, const xtd::drawing::size &size) -> control
 A factory to create a specified control with specified location, and size.
static auto create (const xtd::drawing::point &location, const xtd::drawing::size &size, const xtd::string &name) -> control
 A factory to create a specified control with specified location, size, and name.
static auto create (const control &paren) -> control
 A factory to create a specified control with specified parent.
static auto create (const control &parent, const xtd::drawing::point &location) -> control
 A factory to create a specified control with specified parent, location, size, and name.
static auto create (const control &parent, const xtd::drawing::point &location, const xtd::drawing::size &size) -> control
 A factory to create a specified control with specified parent, location, and size.
static auto create (const control &parent, const xtd::drawing::point &location, const xtd::drawing::size &size, const xtd::string &name) -> control
 A factory to create a specified control with specified parent, location, size, and name.
template<typename control_t>
static auto create () -> control_t
 A factory to create a specified control.
template<typename control_t>
static auto create (const xtd::drawing::point &location) -> control_t
 A factory to create a specified control with specified location.
template<typename control_t>
static auto create (const xtd::drawing::point &location, const xtd::drawing::size &size) -> control_t
 A factory to create a specified control with specified location, and size.
template<typename control_t>
static auto create (const xtd::drawing::point &location, const xtd::drawing::size &size, const xtd::string &name) -> control_t
 A factory to create a specified control with specified location, size, and name.
template<typename control_t>
static auto create (const control &parent) -> control_t
 A factory to create a specified control with specified parent.
template<typename control_t>
static auto create (const control &parent, const xtd::drawing::point &location) -> control_t
 A factory to create a specified control with specified parent, and location.
template<typename control_t>
static auto create (const control &parent, const xtd::drawing::point &location, const xtd::drawing::size &size) -> control_t
 A factory to create a specified control with specified parent, location, and size.
template<typename control_t>
static auto create (const control &parent, const xtd::drawing::point &location, const xtd::drawing::size &size, const xtd::string &name) -> control_t
 A factory to create a specified control with specified parent, location, size, and name.
template<typename control_t>
static auto create (const xtd::string &text) -> control_t
 A factory to create a specified control with specified text.
template<typename control_t>
static auto create (const xtd::string &text, const xtd::drawing::point &location) -> control_t
 A factory to create a specified control with specified text, and location.
template<typename control_t>
static auto create (const xtd::string &text, const xtd::drawing::point &location, const xtd::drawing::size &size) -> control_t
 A factory to create a specified control with specified text, location, and size.
template<typename control_t>
static auto create (const xtd::string &text, const xtd::drawing::point &location, const xtd::drawing::size &size, const xtd::string &name) -> control_t
 A factory to create a specified control with specified text, location,size, and name.
template<typename control_t>
static auto create (const control &parent, const xtd::string &text) -> control_t
 A factory to create a specified control with specified parent, and text.
template<typename control_t>
static auto create (const control &parent, const xtd::string &text, const xtd::drawing::point &location) -> control_t
 A factory to create a specified control with specified parent, text, and location.
template<typename control_t>
static auto create (const control &parent, const xtd::string &text, const xtd::drawing::point &location, const xtd::drawing::size &size) -> control_t
 A factory to create a specified control with specified parent, text, location, and size.
template<typename control_t>
static auto create (const control &parent, const xtd::string &text, const xtd::drawing::point &location, const xtd::drawing::size &size, const xtd::string &name) -> control_t
 A factory to create a specified control with specified parent, text, location, size, and name.
static auto from_child_handle (xtd::intptr handle) -> std::optional< xtd::forms::control_ref >
 Retrieves the control that contains the specified handle.
static auto from_handle (xtd::intptr handle) -> std::optional< xtd::forms::control_ref >
 Returns the control that is currently associated with the specified handle.

Protected Properties

auto control_state () const noexcept -> xtd::forms::visual_styles::control_state
 Gets state.
virtual auto create_params () const noexcept -> xtd::forms::create_params
 Gets the required creation parameters when the control handle is created.
virtual auto default_back_color () const noexcept -> xtd::drawing::color
 Gets the default background color of the control.
virtual auto default_cursor () const noexcept -> xtd::forms::cursor
 Gets the default cursor for the control.
virtual auto default_font () const noexcept -> xtd::drawing::font
 Gets the default font of the control.
virtual auto default_fore_color () const noexcept -> xtd::drawing::color
 Gets the default foreground color of the control.
virtual auto default_size () const noexcept -> xtd::drawing::size
 Gets the default size of the control.

Protected Methods

virtual auto create_handle () -> void
 Creates a handle for the control.
virtual auto destroy_handle () -> void
 Destroys the handle associated with the control.
virtual auto def_wnd_proc (xtd::forms::message &message) -> void
 Sends the specified message to the default window procedure.
auto get_style (xtd::forms::control_styles flag) const noexcept -> bool
 Retrieves the value of the specified control style bit for the control.
virtual auto measure_control () const noexcept -> xtd::drawing::size
 Measure this control.
auto measure_text () const noexcept -> xtd::drawing::size
 Measure this control text.
virtual auto on_auto_size_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::auto_size_changed event.
virtual auto on_back_color_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::back_color_changed event.
virtual auto on_background_image_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::background_image_changed event.
virtual auto on_background_image_layout_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::background_image_layout_changed event.
virtual auto on_control_appearance_changed (const xtd::event_args &e) -> void
 Raises the control::control_appearance_changed event.
virtual auto on_click (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::click event.
virtual auto on_client_size_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::client_size_changed event.
virtual auto on_control_added (const xtd::forms::control_event_args &e) -> void
 Raises the xtd::forms::control::control_added event.
virtual auto on_control_removed (const xtd::forms::control_event_args &e) -> void
 Raises the xtd::forms::control::control_removed event.
virtual auto on_create_control () -> void
 Raises the xtd::forms::control::create_control event.
virtual auto on_cursor_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::cursor_changed event.
virtual auto on_destroy_control () -> void
 Raises the xtd::forms::control::destroy_control event.
virtual auto on_dock_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::dock_changed event.
virtual auto on_double_click (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::double_click event.
virtual auto on_enabled_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::enabled_changed event.
virtual auto on_fore_color_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::fore_color_changed event.
virtual auto on_font_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::font_changed event.
virtual auto on_got_focus (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::got_focus event.
virtual auto on_handle_created (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::handle_created event.
virtual auto on_handle_destroyed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::handle_destroyed event.
virtual auto on_help_requested (xtd::forms::help_event_args &e) -> void
 Raises the xtd::forms::control::help_requested event.
virtual auto on_key_down (xtd::forms::key_event_args &e) -> void
 Raises the xtd::forms::control::key_down event.
virtual auto on_key_press (xtd::forms::key_press_event_args &e) -> void
 Raises the xtd::forms::control::key_press event.
virtual auto on_key_up (xtd::forms::key_event_args &e) -> void
 Raises the xtd::forms::control::key_up event.
virtual auto on_layout (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::layout event.
virtual auto on_location_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::location_changed event.
virtual auto on_lost_focus (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::lost_focus event.
virtual auto on_mouse_click (const xtd::forms::mouse_event_args &e) -> void
 Raises the xtd::forms::control::mouse_click event.
virtual auto on_mouse_double_click (const xtd::forms::mouse_event_args &e) -> void
 Raises the xtd::forms::control::mouse_double_click event.
virtual auto on_mouse_down (const xtd::forms::mouse_event_args &e) -> void
 Raises the xtd::forms::control::mouse_down event.
virtual auto on_mouse_enter (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::mouse_enter event.
virtual auto on_mouse_horizontal_wheel (const xtd::forms::mouse_event_args &e) -> void
 Raises the xtd::forms::control::mouse_horizontal_wheel event.
virtual auto on_mouse_leave (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::mouse_leave event.
virtual auto on_mouse_move (const xtd::forms::mouse_event_args &e) -> void
 Raises the xtd::forms::control::mouse_move event.
virtual auto on_mouse_up (const xtd::forms::mouse_event_args &e) -> void
 Raises the xtd::forms::control::mouse_up event.
virtual auto on_mouse_wheel (const xtd::forms::mouse_event_args &e) -> void
 Raises the xtd::forms::control::mouse_wheel event.
virtual auto on_move (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::move event.
virtual auto on_paint (xtd::forms::paint_event_args &e) -> void
 Raises the xtd::forms::control::paint event.
virtual auto on_paint_background (xtd::forms::paint_event_args &e) -> void
 Paints the background of the xtd::forms::control.
virtual auto on_parent_back_color_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::parent_back_color_changed event.
virtual auto on_parent_cursor_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::parent_cursor_changed event.
virtual auto on_parent_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::parent_changed event.
virtual auto on_parent_enabled_changed (const xtd::event_args &e) -> void
 Raises the xtd::control::enabled_changed event when the xtd::control::enabled property value of the control's container changes..
virtual auto on_parent_fore_color_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::parent_fore_color_changed event.
virtual auto on_parent_font_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::parent_font_changed event.
virtual auto on_resize (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::region event.
virtual auto on_region_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::region_changed event.
virtual auto on_right_to_left_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::right_to_left_changed event.
virtual auto on_size_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::size_changed event.
virtual auto on_style_sheet_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::style_sheet_changed event.
virtual auto on_system_colors_changed (const xtd::event_args &e) -> void
 Raises the control::system_colors_changed event.
virtual auto on_tab_stop_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::tab_stop_changed event.
virtual auto on_text_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::text_changed event.
virtual auto on_visible_changed (const xtd::event_args &e) -> void
 Raises the xtd::forms::control::visible_changed event.
auto post_recreate_handle () noexcept -> void
virtual auto recreate_handle () -> void
 Forces the re-creation of the handle for the control.
virtual auto set_bounds_core (xtd::int32 x, xtd::int32 y, xtd::int32 width, xtd::int32 height, xtd::forms::bounds_specified specified) -> void
 Performs the work of setting the specified bounds of this control.
auto set_can_focus (bool value) -> void
 Sets a value indicating whether the control can receive focus.
virtual auto set_text (const xtd::string &text) -> void
 Sets the text associated with this control.
virtual auto set_client_size_core (xtd::int32 width, xtd::int32 height) -> void
 Sets the size of the client area of the control.
auto set_parent (xtd::intptr handle) -> void
 Sets the parent handle of the control.
auto set_style (xtd::forms::control_styles flag, bool value) -> void
 Sets a specified control_styles flag to either true or false.
virtual auto wnd_proc (xtd::forms::message &m) -> void
 Processes Windows messages.

Protected Static Methods

static auto set_mouse_buttons (xtd::forms::mouse_buttons value) -> void
 Sets a value indicating which of the mouse buttons is in a pressed state.

Additional Inherited Members

 object ()=default
 Create a new instance of the ultimate base class object.
virtual auto get_type () const noexcept -> type_object
 Gets the type of the current instance.
template<typename object_t>
auto memberwise_clone () const -> xtd::unique_ptr_object< object_t >
 Creates a shallow copy of the current object.
virtual auto compare_to (const control &obj) const noexcept -> xtd::int32=0
 Compares the current instance with another object of the same type.
virtual auto equals (const control &) const noexcept -> bool=0
 Indicates whether the current object is equal to another object of the same type.
template<typename object_a_t, typename object_b_t>
static auto equals (const object_a_t &object_a, const object_b_t &object_b) noexcept -> bool
 Determines whether the specified object instances are considered equal.
template<typename object_a_t, typename object_b_t>
static auto reference_equals (const object_a_t &object_a, const object_b_t &object_b) noexcept -> bool
 Determines whether the specified object instances are the same instance.
 component ()
 Initialises a new instance of the component class.
auto design_mode () const noexcept -> bool
 Gets a value that indicates whether the component is currently in design mode.

Member Typedef Documentation

◆ context_menu_ref

Constructor & Destructor Documentation

◆ control() [1/5]

xtd::forms::control::control ( )

Initializes a new instance of the xtd::forms::control class with default settings.

Remarks
The xtd::forms::control class is the base class for all controls used in a Windows Forms application. Because this class is not typically used to create an instance of the class, this constructor is typically not called directly but is instead called by a derived class.

◆ control() [2/5]

xtd::forms::control::control ( const xtd::string & text)
explicit

Initializes a new instance of the xtd::forms::control class with specific text.

Parameters
textThe text displayed by the control.
Remarks
The xtd::forms::control class is the base class for all controls used in a Windows Forms application. Because this class is not typically used to create an instance of the class, this constructor is typically not called directly but is instead called by a derived class.
This version of the xtd::forms::control constructor sets the initial xtd::forms::control::text property value to the text parameter value.

◆ control() [3/5]

xtd::forms::control::control ( const control & parent,
const xtd::string & text )

Initializes a new instance of the xtd::forms::control class as a child control, with specific text.

Parameters
parentThe control to be the parent of the control.
textThe text displayed by the control.
Remarks
The xtd::forms::control class is the base class for all controls used in a Windows Forms application. Because this class is not typically used to create an instance of the class, this constructor is typically not called directly but is instead called by a derived class.
This version of the control constructor sets the initial xtd::forms::control::text property value to the text parameter value. The constructor also adds the control to the parent control's control::control_collection.

◆ control() [4/5]

xtd::forms::control::control ( const xtd::string & text,
int32 left,
int32 top,
int32 width,
int32 height )

Initializes a new instance of the control class with specific text, size, and location.

Parameters
textThe text displayed by the control.
leftThe x position of the control, in pixels, from the left edge of the control's container. The value is assigned to the left property.
topThe y position of the control, in pixels, from the top edge of the control's container. The value is assigned to the top property.
widthThe width of the control, in pixels. The value is assigned to the width property.
heightThe height of the control, in pixels. The value is assigned to the height property.
Remarks
The control class is the base class for all controls used in a Windows Forms application. Because this class is not typically used to create an instance of the class, this constructor is typically not called directly but is instead called by a derived class.
This version of the control constructor sets the initial xtd::forms::control::text property value to the text parameter value. The initial xtd::forms::control::size and xtd::forms::control::location of the control are determined by the left, top, width and height parameter values.

◆ control() [5/5]

xtd::forms::control::control ( const control & parent,
const xtd::string & text,
int32 left,
int32 top,
int32 width,
int32 height )

Initializes a new instance of the xtd::forms::control class as a child control, with specific text, size, and location.

Parameters
parentThe control to be the parent of the control.
textThe text displayed by the control.
leftThe x position of the control, in pixels, from the left edge of the control's container. The value is assigned to the xtd::forms::control::left property.
topThe y position of the control, in pixels, from the top edge of the control's container. The value is assigned to the xtd::forms::control::top property.
widthThe width of the control, in pixels. The value is assigned to the xtd::forms::control::width property.
heightThe height of the control, in pixels. The value is assigned to the xtd::forms::control::height property.
Remarks
The xtd::forms::control class is the base class for all controls used in a Windows Forms application. Because this class is not typically used to create an instance of the class, this constructor is typically not called directly but is instead called by a derived class.
This version of the xtd::forms::control constructor sets the initial xtd::forms::control::text property value to the text parameter value. The constructor also adds the control to the xtd::forms::control::parent control's control::control_collection. The initial xtd::forms::control::size and xtd::forms::control::location of the control are determined by the left, top, width and height parameter values.

Member Function Documentation

◆ anchor() [1/2]

virtual auto xtd::forms::control::anchor ( ) const -> xtd::forms::anchor_styles
nodiscardvirtualnoexcept

Gets the edges of the container to which a control is bound and determines how a control is resized with its parent.

Returns
A bitwise combination of the xtd::forms::anchor_styles values. The default is xtd::forms::anchor_styles::top and xtd::forms::anchor_styles::left.
Remarks
Use the xtd::forms::control::anchor property to define how a control is automatically resized as its parent control is resized. Anchoring a control to its parent control ensures that the anchored edges remain in the same position relative to the edges of the parent control when the parent control is resized.
You can anchor a control to one or more edges of its container. For example, if you have a form with a button whose xtd::forms::control::anchor property value is set to xtd::forms::canchor_styles::top and xtd::forms::anchor_styles::bottom, the button is stretched to maintain the anchored distance to the top and bottom edges of the form as the height of the form is increased.
Note
The xtd::forms::control::anchor and xtd::forms::control::dock properties are mutually exclusive. Only one can be set at a time, and the last one set takes precedence.
Notes to Inheritors
When overriding the xtd::forms::control::anchor property in a derived class, use the base class's xtd::forms::control::anchor property to extend the base implementation. Otherwise, you must provide all the implementation. You are not required to override both the get and set accessors of the xtd::forms::control::anchor property; you can override only one if needed.

◆ anchor() [2/2]

virtual auto xtd::forms::control::anchor ( xtd::forms::anchor_styles value) -> control &
virtual

Gets the edges of the container to which a control is bound and determines how a control is resized with its parent.

Parameters
valueA bitwise combination of the xtd::forms::anchor_styles values. The default is xtd::forms::anchor_styles::top and xtd::forms::anchor_styles::left.
Returns
Current control.
Remarks
Use the xtd::forms::control::anchor property to define how a control is automatically resized as its parent control is resized. Anchoring a control to its parent control ensures that the anchored edges remain in the same position relative to the edges of the parent control when the parent control is resized.
You can anchor a control to one or more edges of its container. For example, if you have a form with a button whose xtd::forms::control::anchor property value is set to xtd::forms::anchor_styles::top and xtd::forms::anchor_styles::bottom, the button is stretched to maintain the anchored distance to the top and bottom edges of the form as the height of the form is increased.
Note
The xtd::forms::control::anchor and xtd::forms::control::dock properties are mutually exclusive. Only one can be set at a time, and the last one set takes precedence.
Warning
Set the xtd::forms::control::anchor property after setting the xtd::forms::control::location and xtd::forms::control::size.
Notes to Inheritors
When overriding the anchor property in a derived class, use the base class's anchor property to extend the base implementation. Otherwise, you must provide all the implementation. You are not required to override both the get and set accessors of the anchor property; you can override only one if needed.

◆ auto_scroll_point()

virtual auto xtd::forms::control::auto_scroll_point ( ) const -> xtd::drawing::point
nodiscardvirtualnoexcept

Gets where this control is scrolled to in scroll_control_into_view(control).

Returns
A xtd::drawing::point specifying the scroll location. The default is the upper-left corner of the control.

◆ auto_size() [1/2]

virtual auto xtd::forms::control::auto_size ( ) const -> bool
nodiscardvirtualnoexcept

Gets a value that indicates whether the control resizes based on its contents.

Returns
true if enabled; otherwise, false.
Remarks
This property is not relevant for this class.

Reimplemented in xtd::forms::button_base, and xtd::forms::collapsible_panel.

◆ auto_size() [2/2]

virtual auto xtd::forms::control::auto_size ( bool value) -> control &
virtual

Sets a value that indicates whether the control resizes based on its contents.

Parameters
valuetrue if enabled; otherwise, false.
Returns
Current control.
Remarks
This property is not relevant for this class.

Reimplemented in xtd::forms::button_base.

◆ back_color() [1/3]

virtual auto xtd::forms::control::back_color ( ) const -> xtd::drawing::color
nodiscardvirtualnoexcept

Gets the background color for the control.

Returns
A xtd::drawing::color that represents the background color of the control. The default is the value of the xtd::forms::control::default_back_color property.
Remarks
The xtd::forms::control::back_color property does not support transparent colors unless the xtd::forms::control_styles::supports_transparent_back_color value of xtd::forms::control_styles is set to true.
The xtd::forms::control::back_color property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a button will have the same xtd::forms::control::back_color as its parent form by default. For more information about ambient properties, see the ambient_properties guide.
Examples
test_forms.cpp.

◆ back_color() [2/3]

virtual auto xtd::forms::control::back_color ( const xtd::drawing::color & value) -> control &
virtual

Sets the background color for the control.

Parameters
valueA xtd::drawing::color that represents the background color of the control. The default is the value of the xtd::forms::control::default_back_color property.
Returns
Current control.
Remarks
The xtd::forms::control::back_color property does not support transparent colors unless the xtd::forms::control_styles::supports_transparent_back_color value of xtd::forms::control_styles is set to true.
The xtd::forms::control::back_color property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a button will have the same xtd::forms::control::back_color as its parent form by default. For more information about ambient properties, see the ambient_properties guide.
Notes to Inheritors
When overriding the xtd::forms::control::back_color property in a derived class, use the base class's xtd::forms::control::back_color property to extend the base implementation. Otherwise, you must provide all the implementation. You are not required to override both the get and set accessors of the xtd::forms::control::back_color property; you can override only one if needed.

◆ back_color() [3/3]

virtual auto xtd::forms::control::back_color ( xtd::null_ptr ) -> control &
virtual

Resets the background color for the control.

Parameters
xtd::null.
Returns
Current control.

◆ background_image() [1/2]

virtual auto xtd::forms::control::background_image ( ) const -> const xtd::drawing::image &
nodiscardvirtualnoexcept

Gets the background image displayed in the control.

Returns
An xtd::drawing::image that represents the image to display in the background of the control.
Remarks
Use the background_image property to place a graphic image onto a control.

◆ background_image() [2/2]

virtual auto xtd::forms::control::background_image ( const xtd::drawing::image & value) -> control &
virtual

Sets the background image displayed in the control.

Parameters
background_imageAn xtd::drawing::image that represents the image to display in the background of the control.
Returns
value control.
Remarks
Use the background_image property to place a graphic image onto a control.

◆ background_image_layout() [1/2]

virtual auto xtd::forms::control::background_image_layout ( ) const -> xtd::forms::image_layout
nodiscardvirtualnoexcept

Gets the background image layout as defined in the xtd::forms::image_layout enumeration.

Returns
One of the values of xtd::forms::image_layout (center , none, stretch, tile, or zoom). tile is the default value.
Remarks
Use the background_image_layout property to specify the position and behavior of an image you have placed onto a control. background_image_layout takes effect only if the background_image property is set.
You can increase performance for large images if you set background_image_layout to something other than tile.

◆ background_image_layout() [2/2]

virtual auto xtd::forms::control::background_image_layout ( xtd::forms::image_layout value) -> control &
virtual

Sets the background image layout as defined in the xtd::forms::image_layout enumeration.

Parameters
valueOne of the values of xtd::forms::image_layout (center , none, stretch, tile, or zoom). tile is the default value.
Returns
Current control.
Remarks
Use the background_image_layout property to specify the position and behavior of an image you have placed onto a control. background_image_layout takes effect only if the background_image property is set.
You can increase performance for large images if you set background_image_layout to something other than tile.

◆ bottom()

virtual auto xtd::forms::control::bottom ( ) const -> xtd::int32
nodiscardvirtualnoexcept

Gets the distance, in pixels, between the bottom edge of the control and the top edge of its container's client area.

Returns
An int32 representing the distance, in pixels, between the bottom edge of the control and the top edge of its container's client area.
Remarks
The value of this property is equal to the sum of the top property value, and the height property value.
The bottom property is a read-only property. You can manipulate this property value by changing the value of the top or height properties or calling the set_bounds, set_bounds_core, update_bounds, or set_client_size_core methods.

◆ bounds() [1/2]

virtual auto xtd::forms::control::bounds ( ) const -> xtd::drawing::rectangle
nodiscardvirtualnoexcept

Gets the size and location of the control including its nonclient elements, in pixels, relative to the parent control.

Returns
A rectangle in pixels relative to the parent control that represents the size and location of the control including its nonclient elements.
Remarks
The bounds of the control include the nonclient elements such as scroll bars, borders, title bars, and menus.

◆ bounds() [2/2]

virtual auto xtd::forms::control::bounds ( const xtd::drawing::rectangle & value) -> control &
virtual

Sets the size and location of the control including its nonclient elements, in pixels, relative to the parent control.

Parameters
valueA rectangle in pixels relative to the parent control that represents the size and location of the control including its nonclient elements.
Returns
Current control.
Remarks
The bounds of the control include the nonclient elements such as scroll bars, borders, title bars, and menus. The Set_bounds_core method is called to set the bounds property. The bounds property is not always changed through its set method so you should override the set_bounds_core method to ensure that your code is executed when the bounds property is set.

◆ can_focus()

virtual auto xtd::forms::control::can_focus ( ) const -> bool
nodiscardvirtualnoexcept

Gets a value indicating whether the control can receive focus.

Returns
true if the control can receive focus; otherwise, false.
Remarks
In order for a control to receive input focus, the control must have a handle assigned to it, and the visible and enabled properties must both be set to true for both the control and all its parent controls, and the control must be a form or the control's outermost parent must be a form.

◆ can_select()

virtual auto xtd::forms::control::can_select ( ) const -> bool
nodiscardvirtualnoexcept

Gets a value indicating whether the control can be selected.

Returns
true if the control can be selected; otherwise, false.s
Remarks
This property returns true if the electable value of control_styles is set to true, is contained in another control, the control itself is visible and enabled, and all its parent controls are visible and enabled.
The Windows Forms controls in the following list are not selectable and will return a value of false for the can_select property. controls derived from these controls are also not selectable.

◆ can_raise_events()

auto xtd::forms::control::can_raise_events ( ) const -> bool
nodiscardoverridevirtualnoexcept

Determines if events can be raised on the control.

Returns
true if the control can raise events; otherwise, false.

Reimplemented from xtd::forms::component.

◆ client_rectangle()

virtual auto xtd::forms::control::client_rectangle ( ) const -> const xtd::drawing::rectangle &
nodiscardvirtualnoexcept

Gets the rectangle that represents the client area of the control.

Returns
A rectangle that represents the client area of the control.
Remarks
The client area of a control is the bounds of the control, minus the nonclient elements such as scroll bars, borders, title bars, and menus.
Because client coordinates are relative to the upper-left corner of the client area of the control, the coordinates of the upper-left corner of the rectangle returned by this property are (0,0). You can use this property to obtain the size and coordinates of the client area of the control for tasks such as drawing on the surface of the control.

◆ client_size() [1/2]

virtual auto xtd::forms::control::client_size ( ) const -> const xtd::drawing::size &
nodiscardvirtualnoexcept

Gets the height and width of the client area of the control.

Returns
A size that represents the dimensions of the client area of the control.
Remarks
The client area of a control is the bounds of the control, minus the nonclient elements such as scroll bars, borders, title bars, and menus.

◆ client_size() [2/2]

virtual auto xtd::forms::control::client_size ( const xtd::drawing::size & value) -> control &
virtual

Sets the height and width of the client area of the control.

Parameters
valueA size that represents the dimensions of the client area of the control.
Returns
Current control.
Remarks
The client area of a control is the bounds of the control, minus the nonclient elements such as scroll bars, borders, title bars, and menus. The set_client_size_core method is called to set the client_size property. The client_size property is not always changed through its set method so you should override the set_client_size_core method to ensure that your code is executed when the client_size property is set.

◆ company_name()

virtual auto xtd::forms::control::company_name ( ) const -> xtd::string
nodiscardvirtualnoexcept

Gets the name of the company or creator of the application containing the control.

Returns
The company name or creator of the application containing the control.

◆ context_menu() [1/3]

virtual auto xtd::forms::control::context_menu ( ) const -> std::optional< context_menu_ref >
nodiscardvirtualnoexcept

Gets the xtd::forms::context_menu that is displayed in the control.

Returns
A xtd::forms::context_menu that represents the context menu to display in the control.

◆ context_menu() [2/3]

virtual auto xtd::forms::control::context_menu ( xtd::forms::context_menu & value) -> control &
virtual

Sets the xtd::forms::context_menu that is displayed in the control.

Parameters
valueA xtd::forms::context_menu that represents the context menu to display in the control.
Returns
Current control.

◆ context_menu() [3/3]

virtual auto xtd::forms::control::context_menu ( xtd::null_ptr ) -> control &
virtual

Resets the xtd::forms::context_menu that is displayed in the control.

Parameters
xtd::null.
Returns
Current control.

◆ control_appearance() [1/2]

virtual auto xtd::forms::control::control_appearance ( ) const -> xtd::forms::control_appearance
nodiscardvirtualnoexcept

Gets control appearance.

Returns
One of xtd::forms::control_appearance values. THe default is xtd::forms::control_appearance::standard.
Remarks
The control appearance determine how the control is drawed :
  • xtd::control::control_appearance::standard : The appearance of the control is determined by current theme of xtd.
  • xtd::control::control_appearance::system : The appearance of the control is determined by the user's operating system.

Reimplemented in xtd::forms::button_base, xtd::forms::group_box, xtd::forms::label, and xtd::forms::loading_indicator.

◆ control_appearance() [2/2]

virtual auto xtd::forms::control::control_appearance ( xtd::forms::control_appearance value) -> control &
virtual

Sets control appearance.

Parameters
valueOne of xtd::forms::control_appearance values. THe default is xtd::forms::control_appearance::standard.
Remarks
The control appearance determine how the control is drawed :
  • xtd::control::control_appearance::standard : The appearance of the control is determined by current theme of xtd.
  • xtd::control::control_appearance::system : The appearance of the control is determined by the user's operating system.

Reimplemented in xtd::forms::button_base, xtd::forms::group_box, xtd::forms::label, and xtd::forms::loading_indicator.

◆ controls() [1/2]

virtual auto xtd::forms::control::controls ( ) -> control_collection &
nodiscardvirtualnoexcept

Gets the collection of controls contained within the control.

Returns
A control::control_collection representing the collection of controls contained within the control.
Remarks
A control can act as a parent to a collection of controls. For example, when several controls are added to a form, each of the controls is a member of the control::control_collection assigned to the controls property of the form, which is derived from the control class.
You can manipulate the controls in the control::control_collection assigned to the controls property by using the methods available in the control::control_collection class.
When adding several controls to a parent control, it is recommended that you call the suspend_layout method before initializing the controls to be added. After adding the controls to the parent control, call the resume_layout method. Doing so will increase the performance of applications with many controls.
Use the controls property to iterate through all controls of a form, including nested controls. Use the get_next_control method to retrieve the previous or next child control in the tab order. Use the active_control property to get or set the active control of a container control.

◆ controls() [2/2]

virtual auto xtd::forms::control::controls ( ) const -> const control_collection &
nodiscardvirtualnoexcept

Gets the collection of controls contained within the control.

Returns
A control::control_collection representing the collection of controls contained within the control.
Remarks
A control can act as a parent to a collection of controls. For example, when several controls are added to a form, each of the controls is a member of the control::control_collection assigned to the controls property of the form, which is derived from the control class.
You can manipulate the controls in the control::control_collection assigned to the controls property by using the methods available in the control::control_collection class.
When adding several controls to a parent control, it is recommended that you call the suspend_layout method before initializing the controls to be added. After adding the controls to the parent control, call the resume_layout method. Doing so will increase the performance of applications with many controls.
Use the controls property to iterate through all controls of a form, including nested controls. Use the get_next_control method to retrieve the previous or next child control in the tab order. Use the active_control property to get or set the active control of a container control.

◆ created()

virtual auto xtd::forms::control::created ( ) const -> bool
nodiscardvirtualnoexcept

Gets a value indicating whether the control has been created.

Returns
true if the control has been created; otherwise, false.
Remarks
The created property returns true if the control was successfully created even though the control's handle might not have been created or recreated yet.

◆ cursor() [1/3]

virtual auto xtd::forms::control::cursor ( ) const -> xtd::forms::cursor
nodiscardvirtualnoexcept

Gets the cursor that is displayed when the mouse pointer is over the control.

Returns
A xtd::forms::cursor that represents the cursor to display when the mouse pointer is over the control.
Remarks
The xtd::forms::control::cursor property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a xtd::forms::button will have the same xtd::forms::control::back_color as its parent xtd::forms::form by default. For more information about ambient properties, see the ambient_properties guide.

◆ cursor() [2/3]

virtual auto xtd::forms::control::cursor ( const xtd::forms::cursor & value) -> control &
virtual

Sets the cursor that is displayed when the mouse pointer is over the control.

Parameters
valueA xtd::forms::cursor that represents the cursor to display when the mouse pointer is over the control.
Returns
Current control.
Remarks
The xtd::forms::control::cursor property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a xtd::forms::button will have the same xtd::forms::control::back_color as its parent xtd::forms::form by default. For more information about ambient properties, see the ambient_properties guide.

◆ cursor() [3/3]

virtual auto xtd::forms::control::cursor ( xtd::null_ptr ) -> control &
virtual

Resets the cursor that is displayed when the mouse pointer is over the control.

Parameters
xtd::null.
Returns
Current control.

◆ display_rectangle()

virtual auto xtd::forms::control::display_rectangle ( ) const -> xtd::drawing::rectangle
nodiscardvirtualnoexcept

Gets the rectangle that represents the display area of the control.

Returns
A rectangle that represents the display area of the control.

Reimplemented in xtd::forms::scrollable_control.

◆ dock() [1/2]

virtual auto xtd::forms::control::dock ( ) const -> xtd::forms::dock_style
nodiscardvirtualnoexcept

Gets which control borders are docked to its parent control and determines how a control is resized with its parent.

Returns
One of the xtd::forms::dock_style values. The default is xtd::forms::dock_style::none.
Remarks
Use the xtd::forms::control::dock property to define how a control is automatically resized as its parent control is resized. For example, setting xtd::forms::control::dock to xtd::forms::dock_style::left causes the control to align itself with the left edges of its parent control and to resize as the parent control is resized. Controls are docked in their Z-order, which is the visual layering of controls on a form along the form's Z-axis (depth).
A control can be docked to one edge of its parent container or can be docked to all edges and fill the parent container.
Setting the xtd::forms::control::margin property on a docked control has no effect on the distance of the control from the edges of its container.
Note
The xtd::forms::control::anchor and xtd::forms::control::dock properties are mutually exclusive. Only one can be set at a time, and the last one set takes precedence.
Notes to Inheritors
When overriding the xtd::forms::control::dock property in a derived class, use the base class's xtd::forms::control::dock property to extend the base implementation. Otherwise, you must provide all the implementation. You are not required to override both the get and set methods of the xtd::forms::control::dock property; you can override only one if needed.

Reimplemented in xtd::forms::splitter, xtd::forms::status_bar, and xtd::forms::tool_bar.

◆ dock() [2/2]

virtual auto xtd::forms::control::dock ( xtd::forms::dock_style value) -> control &
virtual

Sets which control borders are docked to its parent control and determines how a control is resized with its parent.

Parameters
valueOne of the xtd::forms::dock_style values. The default is xtd::forms::dock_style::none.
Returns
Current control.
Remarks
Use the xtd::forms::control::dock property to define how a control is automatically resized as its parent control is resized. For example, setting xtd::forms::control::dock to xtd::forms::dock_style::left causes the control to align itself with the left edges of its parent control and to resize as the parent control is resized. Controls are docked in their Z-order, which is the visual layering of controls on a form along the form's Z-axis (depth).
A control can be docked to one edge of its parent container or can be docked to all edges and fill the parent container.
Setting the xtd::forms::control::margin property on a docked control has no effect on the distance of the control from the edges of its container.
Note
The xtd::forms::control::anchor and xtd::forms::control::dock properties are mutually exclusive. Only one can be set at a time, and the last one set takes precedence.
Notes to Inheritors
When overriding the xtd::forms::control::dock property in a derived class, use the base class's xtd::forms::control::dock property to extend the base implementation. Otherwise, you must provide all the implementation. You are not required to override both the get and set methods of the xtd::forms::control::dock property; you can override only one if needed.

Reimplemented in xtd::forms::splitter, xtd::forms::status_bar, xtd::forms::tool_bar, and xtd::forms::trace_form_base.

◆ double_buffered() [1/2]

virtual auto xtd::forms::control::double_buffered ( ) const -> bool
nodiscardvirtualnoexcept

Gets a value indicating whether this control should redraw its surface using a secondary buffer to reduce or prevent flicker.

Returns
true if the surface of the control should be drawn using double buffering; otherwise, false.

◆ double_buffered() [2/2]

virtual auto xtd::forms::control::double_buffered ( bool value) -> control &
virtual

Sets a value indicating whether this control should redraw its surface using a secondary buffer to reduce or prevent flicker.

Parameters
valuetrue if the surface of the control should be drawn using double buffering; otherwise, false.
Returns
Current control.

◆ enabled() [1/2]

virtual auto xtd::forms::control::enabled ( ) const -> bool
nodiscardvirtualnoexcept

Gets a value indicating whether the control can respond to user interaction.

Returns
true if the control can respond to user interaction; otherwise, false. The default is true.

◆ enabled() [2/2]

virtual auto xtd::forms::control::enabled ( bool value) -> control &
virtual

Sets a value indicating whether the control can respond to user interaction.

Parameters
valuetrue if the control can respond to user interaction; otherwise, false. The default is true.
Returns
Current control.

◆ focused()

virtual auto xtd::forms::control::focused ( ) const -> bool
nodiscardvirtualnoexcept

Gets a value indicating whether the control has input focus.

Returns
true if the control has focus; otherwise, false.

◆ font() [1/3]

virtual auto xtd::forms::control::font ( ) const -> xtd::drawing::font
nodiscardvirtualnoexcept

Gets the font of the text displayed by the control.

Returns
The font to apply to the text displayed by the control. The default is the value of the default_font property.
Remarks
The xtd::forms::control::font property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a xtd::forms::button will have the same xtd::forms::control::back_color as its parent xtd::forms::form by default. For more information about ambient properties, see the ambient_properties guide.

Reimplemented in xtd::forms::font_picker.

Examples
test_forms.cpp.

◆ font() [2/3]

virtual auto xtd::forms::control::font ( const xtd::drawing::font & value) -> control &
virtual

Sets the font of the text displayed by the control.

Parameters
valueThe font to apply to the text displayed by the control. The default is the value of the default_font property.
Returns
Current control.
Remarks
The xtd::forms::control::font property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a xtd::forms::button will have the same xtd::forms::control::back_color as its parent xtd::forms::form by default. For more information about ambient properties, see the ambient_properties guide.

Reimplemented in xtd::forms::font_picker.

◆ font() [3/3]

virtual auto xtd::forms::control::font ( xtd::null_ptr ) -> control &
virtual

Resets the font of the text displayed by the control.

Parameters
xtd::null.
Returns
Current control.

Reimplemented in xtd::forms::form.

◆ fore_color() [1/3]

virtual auto xtd::forms::control::fore_color ( ) const -> xtd::drawing::color
nodiscardvirtualnoexcept

Gets the foreground color of the control.

Returns
The foreground color of the control. The default is the value of the default_fore_color property.
Remarks
The xtd::forms::control::fore_color property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a xtd::forms::button will have the same xtd::forms::control::back_color as its parent xtd::forms::form by default. For more information about ambient properties, see the ambient_properties guide.
Examples
test_forms.cpp.

◆ fore_color() [2/3]

virtual auto xtd::forms::control::fore_color ( const xtd::drawing::color & value) -> control &
virtual

Sets the foreground color of the control.

Parameters
valueThe foreground color of the control. The default is the value of the default_fore_color property.
Returns
Current control.
Remarks
The xtd::forms::control::fore_color property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a xtd::forms::button will have the same xtd::forms::control::back_color as its parent xtd::forms::form by default. For more information about ambient properties, see the ambient_properties guide.

◆ fore_color() [3/3]

virtual auto xtd::forms::control::fore_color ( xtd::null_ptr ) -> control &
virtual

Resets the foreground color of the control.

Parameters
xtd::null.
Returns
Current control.

◆ handle()

auto xtd::forms::control::handle ( ) const -> xtd::intptr
nodiscardoverridevirtual

Gets the window handle that the control is bound to.

Returns
An intptr that contains the window handle (HWND) of the control.
Remarks
When the underlying toolkits is native, xtd::forms::control::handle and xtd::forms::control::native_handle are the same, But if the underlying toolkit is not native, the xtd::forms::control::handle matches the toolkit handle while xtd::forms::control::native_handle returns the true native handle.

Implements xtd::forms::iwin32_window.

◆ height() [1/2]

virtual auto xtd::forms::control::height ( ) const -> xtd::int32
nodiscardvirtualnoexcept

Gets the height of the control.

Returns
The height of the control in pixels.

◆ height() [2/2]

virtual auto xtd::forms::control::height ( xtd::int32 value) -> control &
virtual

Sets the height of the control.

Parameters
valueThe height of the control in pixels.
Returns
Current control.

◆ invoke_required()

auto xtd::forms::control::invoke_required ( ) const -> bool
nodiscardoverridevirtualnoexcept

Gets a value indicating whether the caller must call an invoke method when making method calls to the control because the caller is on a different thread than the one the control was created on.

Returns
true if the control's xttd::forms::control::handle was created on a different thread than the calling thread (indicating that you must make calls to the control through an invoke method); otherwise, false.

Implements xtd::isynchronize_invoke.

◆ is_handle_created()

auto xtd::forms::control::is_handle_created ( ) const -> bool
nodiscardnoexcept

Gets a value indicating whether the control has a handle associated with it.

Returns
true if a handle has been assigned to the control; otherwise, false.
Remarks
Use the is_handle_created property to determine whether create_handle has been called.

◆ left() [1/2]

virtual auto xtd::forms::control::left ( ) const -> xtd::int32
nodiscardvirtualnoexcept

Gets the distance, in pixels, between the left edge of the control and the left edge of its container's client area.

Returns
An int32 representing the distance, in pixels, between the left edge of the control and the left edge of its container's client area.

◆ left() [2/2]

virtual auto xtd::forms::control::left ( xtd::int32 value) -> control &
virtual

Sets the distance, in pixels, between the left edge of the control and the left edge of its container's client area.

Parameters
valueAn int32 representing the distance, in pixels, between the left edge of the control and the left edge of its container's client area.
Returns
Current control.

◆ location() [1/2]

virtual auto xtd::forms::control::location ( ) const -> xtd::drawing::point
nodiscardvirtualnoexcept

Gets the coordinates of the upper-left corner of the control relative to the upper-left corner of its container.

Returns
The point that represents the upper-left corner of the control relative to the upper-left corner of its container.

◆ location() [2/2]

virtual auto xtd::forms::control::location ( const xtd::drawing::point & value) -> control &
virtual

Sets the coordinates of the upper-left corner of the control relative to the upper-left corner of its container.

Parameters
valueThe point that represents the upper-left corner of the control relative to the upper-left corner of its container.
Returns
Current control.

◆ margin() [1/2]

virtual auto xtd::forms::control::margin ( ) const -> xtd::forms::padding
nodiscardvirtualnoexcept

Gets the space between controls.

Returns
A padding representing the space between controls.

◆ margin() [2/2]

virtual auto xtd::forms::control::margin ( const xtd::forms::padding & value) -> control &
virtual

Sets the space between controls.

Parameters
valueA padding representing the space between controls.
Returns
Current control.

◆ maximum_client_size() [1/2]

virtual auto xtd::forms::control::maximum_client_size ( ) const -> const xtd::drawing::size &
nodiscardvirtualnoexcept

Gets the client size that is the upper limit that xtd::forms::control::get_preferred_size can specify.

Returns
An ordered pair of type xtd::drawing::size representing the width and height of a rectangle.
Examples
The following code shows how to set minimum size, set maximum size, move and resize a form.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
client_size({220, 115});
controls().add_range({up_button, left_button, right_button, down_button, shrink_button, grow_button});
text("Form resize example");
key_down += delegate_(auto sender, auto e) {
if (e.key_code() == keys::right) left(left() + 10);
else if (e.key_code() == keys::left) left(left() - 10);
else if (e.key_code() == keys::down) top(top() + 10);
else if (e.key_code() == keys::up) top(top() - 10);
};
key_press += delegate_(auto sender, auto e) {
if (e.key_char() == '+') size(size() + drawing::size {10, 10});
else if (e.key_char() == '-') size(size() - drawing::size {10, 10});
};
up_button.auto_repeat(true);
up_button.bounds({45, 10, 25, 25});
up_button.image(button_images::from_name("go-up"));
up_button.click += delegate_ {
top(top() - 10);
};
left_button.auto_repeat(true);
left_button.bounds({10, 45, 25, 25});
left_button.image(button_images::from_name("go-previous"));
left_button.click += delegate_ {
left(left() - 10);
};
right_button.auto_repeat(true);
right_button.bounds({80, 45, 25, 25});
right_button.image(button_images::from_name("go-next"));
right_button.click += delegate_ {
left(left() + 10);
};
down_button.auto_repeat(true);
down_button.bounds({45, 80, 25, 25});
down_button.image(button_images::from_name("go-down"));
down_button.click += delegate_ {
top(top() + 10);
};
shrink_button.auto_repeat(true);
shrink_button.bounds({150, 45, 25, 25});
shrink_button.image(button_images::from_name("zoom-out"));
shrink_button.click += delegate_ {
size(size() - drawing::size {10, 10});
};
grow_button.auto_repeat(true);
grow_button.bounds({185, 45, 25, 25});
grow_button.image(button_images::from_name("zoom-in"));
grow_button.click += delegate_ {
size(size() + drawing::size {10, 10});
};
}
private:
button up_button;
button left_button;
button right_button;
button down_button;
button grow_button;
button shrink_button;
};
auto main() -> int {
application::run(form1 {});
}
virtual auto size() const noexcept -> xtd::drawing::size
Gets the height and width of the control.
virtual auto maximum_client_size() const noexcept -> const xtd::drawing::size &
Gets the client size that is the upper limit that xtd::forms::control::get_preferred_size can specify...
virtual auto left() const noexcept -> xtd::int32
Gets the distance, in pixels, between the left edge of the control and the left edge of its container...
virtual auto top() const noexcept -> xtd::int32
Gets the distance, in pixels, between the top edge of the control and the top edge of its container's...
virtual auto minimum_client_size() const noexcept -> const xtd::drawing::size &
Gets the client size that is the lower limit that xtd::forms::control::get_preferred_size can specify...
virtual auto client_size() const noexcept -> const xtd::drawing::size &
Gets the height and width of the client area of the control.
virtual auto controls() noexcept -> control_collection &
Gets the collection of controls contained within the control.
xtd::forms::style_sheets::control button
The buttton data allows you to specify the box of a button control.
Definition button.hpp:25
@ e
The E key.
Definition console_key.hpp:96
Stores an ordered pair of integers, which specify a height and width.
Definition size.hpp:32

◆ maximum_client_size() [2/2]

virtual auto xtd::forms::control::maximum_client_size ( const xtd::drawing::size & size) -> control &
virtual

Sets the client size that is the upper limit that xtd::forms::control::get_preferred_size can specify.

Parameters
sizeAn ordered pair of type xtd::drawing::size representing the width and height of a rectangle.
Examples
The following code shows how to set minimum size, set maximum size, move and resize a form.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
client_size({220, 115});
controls().add_range({up_button, left_button, right_button, down_button, shrink_button, grow_button});
text("Form resize example");
key_down += delegate_(auto sender, auto e) {
if (e.key_code() == keys::right) left(left() + 10);
else if (e.key_code() == keys::left) left(left() - 10);
else if (e.key_code() == keys::down) top(top() + 10);
else if (e.key_code() == keys::up) top(top() - 10);
};
key_press += delegate_(auto sender, auto e) {
if (e.key_char() == '+') size(size() + drawing::size {10, 10});
else if (e.key_char() == '-') size(size() - drawing::size {10, 10});
};
up_button.auto_repeat(true);
up_button.bounds({45, 10, 25, 25});
up_button.image(button_images::from_name("go-up"));
up_button.click += delegate_ {
top(top() - 10);
};
left_button.auto_repeat(true);
left_button.bounds({10, 45, 25, 25});
left_button.image(button_images::from_name("go-previous"));
left_button.click += delegate_ {
left(left() - 10);
};
right_button.auto_repeat(true);
right_button.bounds({80, 45, 25, 25});
right_button.image(button_images::from_name("go-next"));
right_button.click += delegate_ {
left(left() + 10);
};
down_button.auto_repeat(true);
down_button.bounds({45, 80, 25, 25});
down_button.image(button_images::from_name("go-down"));
down_button.click += delegate_ {
top(top() + 10);
};
shrink_button.auto_repeat(true);
shrink_button.bounds({150, 45, 25, 25});
shrink_button.image(button_images::from_name("zoom-out"));
shrink_button.click += delegate_ {
size(size() - drawing::size {10, 10});
};
grow_button.auto_repeat(true);
grow_button.bounds({185, 45, 25, 25});
grow_button.image(button_images::from_name("zoom-in"));
grow_button.click += delegate_ {
size(size() + drawing::size {10, 10});
};
}
private:
button up_button;
button left_button;
button right_button;
button down_button;
button grow_button;
button shrink_button;
};
auto main() -> int {
application::run(form1 {});
}

◆ maximum_size() [1/2]

virtual auto xtd::forms::control::maximum_size ( ) const -> const xtd::drawing::size &
nodiscardvirtualnoexcept

Gets the size that is the upper limit that xtd::forms::control::get_preferred_size can specify.

Returns
An ordered pair of type xtd::drawing::size representing the width and height of a rectangle.
Examples
The following code shows how to set minimum size, set maximum size, move and resize a form.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
client_size({220, 115});
controls().add_range({up_button, left_button, right_button, down_button, shrink_button, grow_button});
text("Form resize example");
key_down += delegate_(auto sender, auto e) {
if (e.key_code() == keys::right) left(left() + 10);
else if (e.key_code() == keys::left) left(left() - 10);
else if (e.key_code() == keys::down) top(top() + 10);
else if (e.key_code() == keys::up) top(top() - 10);
};
key_press += delegate_(auto sender, auto e) {
if (e.key_char() == '+') size(size() + drawing::size {10, 10});
else if (e.key_char() == '-') size(size() - drawing::size {10, 10});
};
up_button.auto_repeat(true);
up_button.bounds({45, 10, 25, 25});
up_button.image(button_images::from_name("go-up"));
up_button.click += delegate_ {
top(top() - 10);
};
left_button.auto_repeat(true);
left_button.bounds({10, 45, 25, 25});
left_button.image(button_images::from_name("go-previous"));
left_button.click += delegate_ {
left(left() - 10);
};
right_button.auto_repeat(true);
right_button.bounds({80, 45, 25, 25});
right_button.image(button_images::from_name("go-next"));
right_button.click += delegate_ {
left(left() + 10);
};
down_button.auto_repeat(true);
down_button.bounds({45, 80, 25, 25});
down_button.image(button_images::from_name("go-down"));
down_button.click += delegate_ {
top(top() + 10);
};
shrink_button.auto_repeat(true);
shrink_button.bounds({150, 45, 25, 25});
shrink_button.image(button_images::from_name("zoom-out"));
shrink_button.click += delegate_ {
size(size() - drawing::size {10, 10});
};
grow_button.auto_repeat(true);
grow_button.bounds({185, 45, 25, 25});
grow_button.image(button_images::from_name("zoom-in"));
grow_button.click += delegate_ {
size(size() + drawing::size {10, 10});
};
}
private:
button up_button;
button left_button;
button right_button;
button down_button;
button grow_button;
button shrink_button;
};
auto main() -> int {
application::run(form1 {});
}

◆ maximum_size() [2/2]

virtual auto xtd::forms::control::maximum_size ( const xtd::drawing::size & value) -> control &
virtual

Sets the size that is the upper limit that xtd::forms::control::get_preferred_size can specify.

Parameters
valueAn ordered pair of type xtd::drawing::size representing the width and height of a rectangle.
Examples
The following code shows how to set minimum size, set maximum size, move and resize a form.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
client_size({220, 115});
controls().add_range({up_button, left_button, right_button, down_button, shrink_button, grow_button});
text("Form resize example");
key_down += delegate_(auto sender, auto e) {
if (e.key_code() == keys::right) left(left() + 10);
else if (e.key_code() == keys::left) left(left() - 10);
else if (e.key_code() == keys::down) top(top() + 10);
else if (e.key_code() == keys::up) top(top() - 10);
};
key_press += delegate_(auto sender, auto e) {
if (e.key_char() == '+') size(size() + drawing::size {10, 10});
else if (e.key_char() == '-') size(size() - drawing::size {10, 10});
};
up_button.auto_repeat(true);
up_button.bounds({45, 10, 25, 25});
up_button.image(button_images::from_name("go-up"));
up_button.click += delegate_ {
top(top() - 10);
};
left_button.auto_repeat(true);
left_button.bounds({10, 45, 25, 25});
left_button.image(button_images::from_name("go-previous"));
left_button.click += delegate_ {
left(left() - 10);
};
right_button.auto_repeat(true);
right_button.bounds({80, 45, 25, 25});
right_button.image(button_images::from_name("go-next"));
right_button.click += delegate_ {
left(left() + 10);
};
down_button.auto_repeat(true);
down_button.bounds({45, 80, 25, 25});
down_button.image(button_images::from_name("go-down"));
down_button.click += delegate_ {
top(top() + 10);
};
shrink_button.auto_repeat(true);
shrink_button.bounds({150, 45, 25, 25});
shrink_button.image(button_images::from_name("zoom-out"));
shrink_button.click += delegate_ {
size(size() - drawing::size {10, 10});
};
grow_button.auto_repeat(true);
grow_button.bounds({185, 45, 25, 25});
grow_button.image(button_images::from_name("zoom-in"));
grow_button.click += delegate_ {
size(size() + drawing::size {10, 10});
};
}
private:
button up_button;
button left_button;
button right_button;
button down_button;
button grow_button;
button shrink_button;
};
auto main() -> int {
application::run(form1 {});
}

◆ minimum_client_size() [1/2]

virtual auto xtd::forms::control::minimum_client_size ( ) const -> const xtd::drawing::size &
nodiscardvirtualnoexcept

Gets the client size that is the lower limit that xtd::forms::control::get_preferred_size can specify.

Returns
An ordered pair of type xtd::drawing::size representing the width and height of a rectangle.
Examples
The following code shows how to set minimum size, set maximum size, move and resize a form.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
client_size({220, 115});
controls().add_range({up_button, left_button, right_button, down_button, shrink_button, grow_button});
text("Form resize example");
key_down += delegate_(auto sender, auto e) {
if (e.key_code() == keys::right) left(left() + 10);
else if (e.key_code() == keys::left) left(left() - 10);
else if (e.key_code() == keys::down) top(top() + 10);
else if (e.key_code() == keys::up) top(top() - 10);
};
key_press += delegate_(auto sender, auto e) {
if (e.key_char() == '+') size(size() + drawing::size {10, 10});
else if (e.key_char() == '-') size(size() - drawing::size {10, 10});
};
up_button.auto_repeat(true);
up_button.bounds({45, 10, 25, 25});
up_button.image(button_images::from_name("go-up"));
up_button.click += delegate_ {
top(top() - 10);
};
left_button.auto_repeat(true);
left_button.bounds({10, 45, 25, 25});
left_button.image(button_images::from_name("go-previous"));
left_button.click += delegate_ {
left(left() - 10);
};
right_button.auto_repeat(true);
right_button.bounds({80, 45, 25, 25});
right_button.image(button_images::from_name("go-next"));
right_button.click += delegate_ {
left(left() + 10);
};
down_button.auto_repeat(true);
down_button.bounds({45, 80, 25, 25});
down_button.image(button_images::from_name("go-down"));
down_button.click += delegate_ {
top(top() + 10);
};
shrink_button.auto_repeat(true);
shrink_button.bounds({150, 45, 25, 25});
shrink_button.image(button_images::from_name("zoom-out"));
shrink_button.click += delegate_ {
size(size() - drawing::size {10, 10});
};
grow_button.auto_repeat(true);
grow_button.bounds({185, 45, 25, 25});
grow_button.image(button_images::from_name("zoom-in"));
grow_button.click += delegate_ {
size(size() + drawing::size {10, 10});
};
}
private:
button up_button;
button left_button;
button right_button;
button down_button;
button grow_button;
button shrink_button;
};
auto main() -> int {
application::run(form1 {});
}

◆ minimum_client_size() [2/2]

virtual auto xtd::forms::control::minimum_client_size ( const xtd::drawing::size & value) -> control &
virtual

Sets the client size that is the lower limit that xtd::forms::control::get_preferred_size can specify.

Parameters
valueAn ordered pair of type xtd::drawing::size representing the width and height of a rectangle.
Examples
The following code shows how to set minimum size, set maximum size, move and resize a form.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
client_size({220, 115});
controls().add_range({up_button, left_button, right_button, down_button, shrink_button, grow_button});
text("Form resize example");
key_down += delegate_(auto sender, auto e) {
if (e.key_code() == keys::right) left(left() + 10);
else if (e.key_code() == keys::left) left(left() - 10);
else if (e.key_code() == keys::down) top(top() + 10);
else if (e.key_code() == keys::up) top(top() - 10);
};
key_press += delegate_(auto sender, auto e) {
if (e.key_char() == '+') size(size() + drawing::size {10, 10});
else if (e.key_char() == '-') size(size() - drawing::size {10, 10});
};
up_button.auto_repeat(true);
up_button.bounds({45, 10, 25, 25});
up_button.image(button_images::from_name("go-up"));
up_button.click += delegate_ {
top(top() - 10);
};
left_button.auto_repeat(true);
left_button.bounds({10, 45, 25, 25});
left_button.image(button_images::from_name("go-previous"));
left_button.click += delegate_ {
left(left() - 10);
};
right_button.auto_repeat(true);
right_button.bounds({80, 45, 25, 25});
right_button.image(button_images::from_name("go-next"));
right_button.click += delegate_ {
left(left() + 10);
};
down_button.auto_repeat(true);
down_button.bounds({45, 80, 25, 25});
down_button.image(button_images::from_name("go-down"));
down_button.click += delegate_ {
top(top() + 10);
};
shrink_button.auto_repeat(true);
shrink_button.bounds({150, 45, 25, 25});
shrink_button.image(button_images::from_name("zoom-out"));
shrink_button.click += delegate_ {
size(size() - drawing::size {10, 10});
};
grow_button.auto_repeat(true);
grow_button.bounds({185, 45, 25, 25});
grow_button.image(button_images::from_name("zoom-in"));
grow_button.click += delegate_ {
size(size() + drawing::size {10, 10});
};
}
private:
button up_button;
button left_button;
button right_button;
button down_button;
button grow_button;
button shrink_button;
};
auto main() -> int {
application::run(form1 {});
}

◆ minimum_size() [1/2]

virtual auto xtd::forms::control::minimum_size ( ) const -> const xtd::drawing::size &
nodiscardvirtualnoexcept

Gets the size that is the lower limit that xtd::forms::control::get_preferred_size can specify.

Returns
An ordered pair of type xtd::drawing::size representing the width and height of a rectangle.
Examples
The following code shows how to set minimum size, set maximum size, move and resize a form.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
client_size({220, 115});
controls().add_range({up_button, left_button, right_button, down_button, shrink_button, grow_button});
text("Form resize example");
key_down += delegate_(auto sender, auto e) {
if (e.key_code() == keys::right) left(left() + 10);
else if (e.key_code() == keys::left) left(left() - 10);
else if (e.key_code() == keys::down) top(top() + 10);
else if (e.key_code() == keys::up) top(top() - 10);
};
key_press += delegate_(auto sender, auto e) {
if (e.key_char() == '+') size(size() + drawing::size {10, 10});
else if (e.key_char() == '-') size(size() - drawing::size {10, 10});
};
up_button.auto_repeat(true);
up_button.bounds({45, 10, 25, 25});
up_button.image(button_images::from_name("go-up"));
up_button.click += delegate_ {
top(top() - 10);
};
left_button.auto_repeat(true);
left_button.bounds({10, 45, 25, 25});
left_button.image(button_images::from_name("go-previous"));
left_button.click += delegate_ {
left(left() - 10);
};
right_button.auto_repeat(true);
right_button.bounds({80, 45, 25, 25});
right_button.image(button_images::from_name("go-next"));
right_button.click += delegate_ {
left(left() + 10);
};
down_button.auto_repeat(true);
down_button.bounds({45, 80, 25, 25});
down_button.image(button_images::from_name("go-down"));
down_button.click += delegate_ {
top(top() + 10);
};
shrink_button.auto_repeat(true);
shrink_button.bounds({150, 45, 25, 25});
shrink_button.image(button_images::from_name("zoom-out"));
shrink_button.click += delegate_ {
size(size() - drawing::size {10, 10});
};
grow_button.auto_repeat(true);
grow_button.bounds({185, 45, 25, 25});
grow_button.image(button_images::from_name("zoom-in"));
grow_button.click += delegate_ {
size(size() + drawing::size {10, 10});
};
}
private:
button up_button;
button left_button;
button right_button;
button down_button;
button grow_button;
button shrink_button;
};
auto main() -> int {
application::run(form1 {});
}

◆ minimum_size() [2/2]

virtual auto xtd::forms::control::minimum_size ( const xtd::drawing::size & value) -> control &
virtual

Sets the size that is the lower limit that xtd::forms::control::get_preferred_size can specify.

Parameters
valueAn ordered pair of type xtd::drawing::size representing the width and height of a rectangle.
Examples
The following code shows how to set minimum size, set maximum size, move and resize a form.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
client_size({220, 115});
controls().add_range({up_button, left_button, right_button, down_button, shrink_button, grow_button});
text("Form resize example");
key_down += delegate_(auto sender, auto e) {
if (e.key_code() == keys::right) left(left() + 10);
else if (e.key_code() == keys::left) left(left() - 10);
else if (e.key_code() == keys::down) top(top() + 10);
else if (e.key_code() == keys::up) top(top() - 10);
};
key_press += delegate_(auto sender, auto e) {
if (e.key_char() == '+') size(size() + drawing::size {10, 10});
else if (e.key_char() == '-') size(size() - drawing::size {10, 10});
};
up_button.auto_repeat(true);
up_button.bounds({45, 10, 25, 25});
up_button.image(button_images::from_name("go-up"));
up_button.click += delegate_ {
top(top() - 10);
};
left_button.auto_repeat(true);
left_button.bounds({10, 45, 25, 25});
left_button.image(button_images::from_name("go-previous"));
left_button.click += delegate_ {
left(left() - 10);
};
right_button.auto_repeat(true);
right_button.bounds({80, 45, 25, 25});
right_button.image(button_images::from_name("go-next"));
right_button.click += delegate_ {
left(left() + 10);
};
down_button.auto_repeat(true);
down_button.bounds({45, 80, 25, 25});
down_button.image(button_images::from_name("go-down"));
down_button.click += delegate_ {
top(top() + 10);
};
shrink_button.auto_repeat(true);
shrink_button.bounds({150, 45, 25, 25});
shrink_button.image(button_images::from_name("zoom-out"));
shrink_button.click += delegate_ {
size(size() - drawing::size {10, 10});
};
grow_button.auto_repeat(true);
grow_button.bounds({185, 45, 25, 25});
grow_button.image(button_images::from_name("zoom-in"));
grow_button.click += delegate_ {
size(size() + drawing::size {10, 10});
};
}
private:
button up_button;
button left_button;
button right_button;
button down_button;
button grow_button;
button shrink_button;
};
auto main() -> int {
application::run(form1 {});
}

◆ native_handle()

auto xtd::forms::control::native_handle ( ) const -> xtd::intptr
nodiscardnoexcept

Gets the native handle that the control is bound to.

Returns
An intptr that contains the native handle (HWND) of the control.
Remarks
When the underlying toolkits is native, xtd::forms::control::handle and xtd::forms::control::native_handle are the same, But if the underlying toolkit is not native, the xtd::forms::control::handle matches the toolkit handle while xtd::forms::control::native_handle returns the true native handle.

◆ name() [1/2]

virtual auto xtd::forms::control::name ( ) const -> const xtd::string &
nodiscardvirtualnoexcept

Gets the name of the control.

Returns
The name of the control. The default is an empty string ("").

Reimplemented in xtd::forms::trace_form_base.

◆ name() [2/2]

virtual auto xtd::forms::control::name ( const xtd::string & value) -> control &
virtual

Sets the name of the control.

Parameters
valueThe name of the control. The default is an empty string ("").
Returns
Current control.

◆ padding() [1/2]

virtual auto xtd::forms::control::padding ( ) const -> xtd::forms::padding
nodiscardvirtualnoexcept

Gets padding within the control.

Returns
A padding representing the control's internal spacing characteristics.

◆ padding() [2/2]

virtual auto xtd::forms::control::padding ( const xtd::forms::padding & value) -> control &
virtual

Sets padding within the control.

Parameters
valueA padding representing the control's internal spacing characteristics.
Returns
Current control.

◆ parent() [1/3]

virtual auto xtd::forms::control::parent ( ) const -> std::optional< xtd::forms::control_ref >
nodiscardvirtualnoexcept

Gets the parent container of the control.

Returns
A control that represents the parent or container control of the control.

◆ parent() [2/3]

virtual auto xtd::forms::control::parent ( const control & value) -> control &
virtual

Sets the parent container of the control.

Parameters
valueA control that represents the parent or container control of the control or nullptr for none.
Returns
Current control.

Reimplemented in xtd::forms::form, and xtd::forms::tab_page.

◆ parent() [3/3]

virtual auto xtd::forms::control::parent ( xtd::null_ptr ) -> control &
virtual

Resets the parent container of the control.

Parameters
xtd::null.
Returns
Current control.

Reimplemented in xtd::forms::tab_page.

◆ product_name()

virtual auto xtd::forms::control::product_name ( ) const -> xtd::string
nodiscardvirtualnoexcept

Gets the product name of the assembly containing the control.

Returns
The product name of the assembly containing the control.

◆ recreating_handle()

auto xtd::forms::control::recreating_handle ( ) const -> bool
nodiscardnoexcept

Gets a value indicating whether the control is currently re-creating its handle.

Returns
true if the control is currently re-creating its handle; otherwise, false.

◆ region() [1/2]

virtual auto xtd::forms::control::region ( ) const -> const xtd::drawing::region &
nodiscardvirtualnoexcept

Gets the window region associated with the control.

Returns
The window xtd::drawing::region associated with the control.
Remarks
The window region is a collection of pixels within the window where the operating system permits drawing. The operating system does not display any portion of a window that lies outside of the window region. The coordinates of a control's region are relative to the upper-left corner of the control, not the client area of the control.
Note
The collection of pixels contained with the region can be noncontiguous.

◆ region() [2/2]

virtual auto xtd::forms::control::region ( const xtd::drawing::region & value) -> control &
virtual

Sets the window region associated with the control.

Parameters
valueThe window xtd::drawing::region associated with the control.
Returns
Current control.
Remarks
The window region is a collection of pixels within the window where the operating system permits drawing. The operating system does not display any portion of a window that lies outside of the window region. The coordinates of a control's region are relative to the upper-left corner of the control, not the client area of the control.
Note
The collection of pixels contained with the region can be noncontiguous.

◆ right()

virtual auto xtd::forms::control::right ( ) const -> xtd::int32
nodiscardvirtualnoexcept

Gets the distance, in pixels, between the right edge of the control and the left edge of its container's client area.

Returns
An int32 representing the distance, in pixels, between the right edge of the control and the left edge of its container's client area.

◆ right_to_left() [1/3]

virtual auto xtd::forms::control::right_to_left ( ) const -> xtd::forms::right_to_left
nodiscardvirtualnoexcept

Gets a value indicating whether control's elements are aligned to support locales using right-to-left fonts.

Returns
One of the xtd::forms::right_to_left values. The default is xtd::forms::right_to_left::inherit.
Remarks
The xtd::forms::control::right_to_left property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a xtd::forms::button will have the same xtd::forms::control::back_color as its parent xtd::forms::form by default. For more information about ambient properties, see the ambient_properties guide.
The xtd::forms::control::right_to_left property is used for international applications where the language is written from right to left, such as Hebrew or Arabic. When this property is set to xtd::forms::right_to_left::yes, control elements that include text are displayed from right to left.
Note
If the value of the xtd::forms::control::right_to_left property is changed at run time, only raw text without formatting is preserved.
Remarks
The following are a few examples of how control elements are affected by the xtd::forms::control::right_to_left property value of xtd::forms::right_to_left::yes :
Notes to Inheritors
When overriding the xtd::forms::control::right_to_left property in a derived class, use the base class's xtd::forms::control::right_to_left property to extend the base implementation. Otherwise, you must provide all the implementation. You are not required to override both the get and set accessors of the xtd::forms::control::right_to_left property; you can override only one if needed.

◆ right_to_left() [2/3]

virtual auto xtd::forms::control::right_to_left ( xtd::forms::right_to_left value) -> control &
virtual

Sets a value indicating whether control's elements are aligned to support locales using right-to-left fonts.

Parameters
valueOne of the xtd::forms::right_to_left values. The default is xtd::forms::right_to_left::inherit.
Returns
Current control.
Remarks
The xtd::forms::control::right_to_left property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a xtd::forms::button will have the same xtd::forms::control::back_color as its parent xtd::forms::form by default. For more information about ambient properties, see the ambient_properties guide.
The xtd::forms::control::right_to_left property is used for international applications where the language is written from right to left, such as Hebrew or Arabic. When this property is set to xtd::forms::right_to_left::yes, control elements that include text are displayed from right to left.
Note
If the value of the xtd::forms::control::right_to_left property is changed at run time, only raw text without formatting is preserved.
Remarks
The following are a few examples of how control elements are affected by the xtd::forms::control::right_to_left property value of xtd::forms::right_to_left::yes :
Notes to Inheritors
When overriding the xtd::forms::control::right_to_left property in a derived class, use the base class's xtd::forms::control::right_to_left property to extend the base implementation. Otherwise, you must provide all the implementation. You are not required to override both the get and set accessors of the xtd::forms::control::right_to_left property; you can override only one if needed.

◆ right_to_left() [3/3]

virtual auto xtd::forms::control::right_to_left ( xtd::null_ptr ) -> control &
virtual

Resets a value indicating whether control's elements are aligned to support locales using right-to-left fonts.

Parameters
xtd::null.
Returns
Current control.

◆ size() [1/2]

virtual auto xtd::forms::control::size ( ) const -> xtd::drawing::size
nodiscardvirtualnoexcept

Gets the height and width of the control.

Returns
The size that represents the height and width of the control in pixels.

◆ size() [2/2]

virtual auto xtd::forms::control::size ( const xtd::drawing::size & value) -> control &
virtual

Sets the height and width of the control.

Parameters
valueThe size that represents the height and width of the control in pixels.
Returns
Current control.

◆ style_sheet() [1/4]

virtual auto xtd::forms::control::style_sheet ( ) const -> xtd::forms::style_sheets::style_sheet
nodiscardvirtualnoexcept

Gets the contol style sheet.

Returns
The xtd::forms::style_sheets::style-sheet style sheet associate to this current instance of xtd::forms::control.
Remarks
For more information, see Style sheets overview.

◆ style_sheet() [2/4]

virtual auto xtd::forms::control::style_sheet ( const xtd::forms::style_sheets::style_sheet & value) -> control &
virtual

Sets the contol style sheet.

Parameters
valueThe xtd::forms::style_sheets::style-sheet style sheet associate to this current instance of xtd::forms::control.
Remarks
For more information, see Style sheets overview.

◆ style_sheet() [3/4]

virtual auto xtd::forms::control::style_sheet ( const xtd::string & value) -> control &
virtual

Sets the contol style sheet.

Parameters
valueThe xtd::forms::style_sheets::style-sheet style sheet associate to this current instance of xtd::forms::control.
Returns
Current control.
Remarks
For more information, see Style sheets overview.

◆ style_sheet() [4/4]

virtual auto xtd::forms::control::style_sheet ( xtd::null_ptr ) -> control &
virtual

Resets the contol style sheet.

Parameters
xtd::null.
Returns
Current control.
Remarks
For more information, see Style sheets overview.

◆ tab_stop() [1/2]

virtual auto xtd::forms::control::tab_stop ( ) const -> bool
nodiscardvirtualnoexcept

Gets a value indicating whether the user can give the focus to this control using the TAB key.

Returns
true if the user can give the focus to the control using the TAB key; otherwise, false. The default is true.
Note
Note: This property will always return true for an instance of the xtd::forms::form class.
Remarks
When the user presses the TAB key, the input focus is set to the next control in the tab order. Controls with the xtd::forms::control::tab_stop property value of false are not included in the collection of controls in the tab order. The tab order can be manipulated by setting the control's xtd::forms::control::tab_index property value.

◆ tab_stop() [2/2]

virtual auto xtd::forms::control::tab_stop ( bool value) -> control &
virtual

Sets a value indicating whether the user can give the focus to this control using the TAB key.

Parameters
valuetrue if the user can give the focus to the control using the TAB key; otherwise, false. The default is true.
Returns
Current control.
Note
Note: This property will always return true for an instance of the xtd::forms::form class.
Remarks
When the user presses the TAB key, the input focus is set to the next control in the tab order. Controls with the xtd::forms::control::tab_stop property value of false are not included in the collection of controls in the tab order. The tab order can be manipulated by setting the control's xtd::forms::control::tab_index property value.

◆ tag() [1/2]

virtual auto xtd::forms::control::tag ( ) const -> const xtd::any_object &
nodiscardvirtualnoexcept

Gets the object that contains data about the control.

Returns
A xtd::any_object that contains data about the control. The default is empty.
Remarks
Any type of class can be assigned to this property.
A common use for the tag property is to store data that is closely associated with the control. For example, if you have a control that displays information about a customer, you might store a data_set that contains the customer's order history in that control's tag property so the data can be accessed quickly.

◆ tag() [2/2]

virtual auto xtd::forms::control::tag ( const xtd::any_object & value) -> control &
virtual

Sets the object that contains data about the control.

Parameters
valueA xtd::any_object that contains data about the control. The default is empty.
Returns
Current control.
Remarks
Any type of class can be assigned to this property.
A common use for the tag property is to store data that is closely associated with the control. For example, if you have a control that displays information about a customer, you might store a data_set that contains the customer's order history in that control's tag property so the data can be accessed quickly.

◆ text() [1/2]

virtual auto xtd::forms::control::text ( ) const -> const xtd::string &
nodiscardvirtualnoexcept

Gets the text associated with this control.

Returns
The text associated with this control.

Reimplemented in xtd::forms::command_link_button, xtd::forms::lcd_label, and xtd::forms::text_box.

◆ text() [2/2]

virtual auto xtd::forms::control::text ( const xtd::string & value) -> control &
virtual

Sets the text associated with this control.

Parameters
valueThe text associated with this control.
Returns
Current control.

Reimplemented in xtd::forms::checked_list_box, xtd::forms::choice, xtd::forms::combo_box, xtd::forms::command_link_button, xtd::forms::lcd_label, xtd::forms::list_box, xtd::forms::tab_page, and xtd::forms::text_box.

◆ toolkit_handle()

auto xtd::forms::control::toolkit_handle ( ) const -> xtd::intptr
nodiscardnoexcept

Gets the toolkit handle that the control is bound to.

Returns
An intptr that contains the toolkit handle (HWND) of the control.
Remarks
When the underlying toolkits is native, xtd::forms::control::handle and xtd::forms::control::toolkit_handle are the same, But if the underlying toolkit is not native, the xtd::forms::control::handle matches the toolkit handle while xtd::forms::control::toolkit_handle returns the toolkit handle.

◆ top() [1/2]

virtual auto xtd::forms::control::top ( ) const -> xtd::int32
nodiscardvirtualnoexcept

Gets the distance, in pixels, between the top edge of the control and the top edge of its container's client area.

Returns
An std::int32_t representing the distance, in pixels, between the bottom edge of the control and the top edge of its container's client area.

◆ top() [2/2]

virtual auto xtd::forms::control::top ( xtd::int32 value) -> control &
virtual

Sets the distance, in pixels, between the top edge of the control and the top edge of its container's client area.

Parameters
valueAn std::int32_t representing the distance, in pixels, between the bottom edge of the control and the top edge of its container's client area.
Returns
Current control.

◆ top_level_control()

virtual auto xtd::forms::control::top_level_control ( ) const -> std::optional< xtd::forms::control_ref >
nodiscardvirtualnoexcept

Gets the parent control that is not parented by another Windows Forms control. Typically, this is the outermost Form that the control is contained in.

Returns
The control that represents the top-level control that contains the current control.

◆ visible() [1/2]

virtual auto xtd::forms::control::visible ( ) const -> bool
nodiscardvirtualnoexcept

Gets a value indicating whether the control and all its child controls are displayed.

Returns
true if the control and all its child controls are displayed; otherwise, false. The default is true.

◆ visible() [2/2]

virtual auto xtd::forms::control::visible ( bool value) -> control &
virtual

Sets a value indicating whether the control and all its child controls are displayed.

Parameters
valuetrue if the control and all its child controls are displayed; otherwise, false. The default is true.
Returns
Current control.

Reimplemented in xtd::forms::form.

◆ width() [1/2]

virtual auto xtd::forms::control::width ( ) const -> xtd::int32
nodiscardvirtualnoexcept

Gets the width of the control.

Returns
The width of the control in pixels.

◆ width() [2/2]

virtual auto xtd::forms::control::width ( xtd::int32 value) -> control &
virtual

Sets the width of the control.

Parameters
valueThe width of the control in pixels.
Returns
Current control.

◆ check_for_illegal_cross_thread_calls() [1/2]

auto xtd::forms::control::check_for_illegal_cross_thread_calls ( ) -> bool
staticnodiscardnoexcept

Gets a value indicating whether to catch calls on the wrong thread that access a xtd::forms::contrtol::handle property when an application is being debugged.

Returns
true if calls on the wrong thread are caught; otherwise, false.
Remarks
When a thread other than the creating thread of a control tries to access one of that control's methods or properties, it often leads to unpredictable results. A common invalid thread activity is a call on the wrong thread that accesses the xtd::forms::control::handle property. Set xtd::forms::control::check_for_illegal_cross_thread_calls to true to find and diagnose this thread activity more easily while debugging.
Warning
Be careful, some OS don't support cross-thread UI operations!

◆ check_for_illegal_cross_thread_calls() [2/2]

auto xtd::forms::control::check_for_illegal_cross_thread_calls ( bool value) -> void
static

Sets a value indicating whether to catch calls on the wrong thread that access a xtd::forms::contrtol::handle property when an application is being debugged.

Parameters
valuetrue if calls on the wrong thread are caught; otherwise, false.
Remarks
When a thread other than the creating thread of a control tries to access one of that control's methods or properties, it often leads to unpredictable results. A common invalid thread activity is a call on the wrong thread that accesses the xtd::forms::control::handle property. Set xtd::forms::control::check_for_illegal_cross_thread_calls to true to find and diagnose this thread activity more easily while debugging.
Warning
Be careful, some OS don't support cross-thread UI operations!

◆ modifier_keys()

auto xtd::forms::control::modifier_keys ( ) -> xtd::forms::keys
staticnodiscardnoexcept

Gets a value indicating which of the modifier keys (SHIFT, CTRL, and ALT) is in a pressed state.

Returns
A bitwise combination of the keys values. The default is none.

◆ mouse_buttons()

auto xtd::forms::control::mouse_buttons ( ) -> xtd::forms::mouse_buttons
staticnodiscardnoexcept

Gets a value indicating which of the mouse buttons is in a pressed state.

Returns
A bitwise combination of the mouse_buttons enumeration values. The default is none.

◆ mouse_position()

auto xtd::forms::control::mouse_position ( ) -> xtd::drawing::point
staticnoexcept

Gets the position of the mouse cursor in screen coordinates.

Returns
A xtd::drawing::point that contains the coordinates of the mouse cursor relative to the upper-left corner of the screen.
Remarks
The xtd::forms::control::mouse_position property returns a xtd::drawing::point that represents the mouse cursor position at the time the property was referenced. The coordinates indicate the position on the screen, not relative to the control, and are returned regardless of whether the cursor is positioned over the control. The coordinates of the upper-left corner of the screen are 0,0.
The xtd::forms::control::mouse_position property is identical to the xtd::forms::cursor::position property.

◆ begin_invoke() [1/2]

auto xtd::forms::control::begin_invoke ( xtd::delegate< void()> method) -> xtd::async_result
nodiscardoverridevirtual

Executes the specified delegate asynchronously on the thread that the control's underlying handle was created on.

Parameters
methodA delegate to a method that takes no parameters.
Returns
An async_result_invoke that represents the result of the begin_invoke(delegate) operation.

Implements xtd::isynchronize_invoke.

◆ begin_invoke() [2/2]

auto xtd::forms::control::begin_invoke ( xtd::delegate< void(xtd::array< xtd::any_object >)> method,
const xtd::array< xtd::any_object > & args ) -> xtd::async_result
nodiscardoverridevirtual

Executes the specified delegate asynchronously with the specified arguments, on the thread that the control's underlying handle was created on.

Parameters
methodA delegate to a method that takes parameters of the same number and type that are contained in the args parameter.
argsAn array of objects to pass as arguments to the given method. This can be empty if no arguments are needed.
Returns
An async_result_invoke that represents the result of the begin_invoke(delegate) operation.

Implements xtd::isynchronize_invoke.

◆ bring_to_front()

virtual auto xtd::forms::control::bring_to_front ( ) -> void
virtual

Brings the control to the front of the z-order.

Remarks
The control is moved to the front of the z-order. If the control is a child of another control, the child control is moved to the front of the z-order. bring_to_front does not make a control a top-level control, and it does not raise the xtd::forms::control::paint event.

Reimplemented in xtd::forms::form.

◆ create_control()

auto xtd::forms::control::create_control ( ) -> void

Forces the creation of the visible control, including the creation of the handle and any visible child controls.

Remarks
The create_control method forces a handle to be created for the control and its child controls. This method is used when you need a handle immediately for manipulation of the control or its children; simply calling a control's constructor does not create the Handle.
create_control does not create a control handle if the control's visible property is false. You can either call the create_control method or access the handle property to create the control's handle regardless of the control's visibility, but in this case, no window handles are created for the control's children.

◆ create_graphics()

auto xtd::forms::control::create_graphics ( ) const -> xtd::drawing::graphics
nodiscard

Creates the xtd::drawing::graphics for the control.

Returns
A xtd::drawing::graphics for the control.
Remarks
The graphics object that you retrieve through the create_graphics method should not normally be retained after the current Windows message has been processed, because anything painted with that object will be erased with the next WM_PAINT message. Therefore you cannot cache the graphics object for reuse, except to use non-visual methods like xtd::drawing::graphics::measure_string. Instead, you must call create_graphics every time that you want to use the graphics object.

◆ destroy_control()

virtual auto xtd::forms::control::destroy_control ( ) -> void
virtual

Forces the destruction of the visible control, including the destruction of the handle and any visible child controls.

Remarks
The destroy_control method forces a handle to be destroyed for the control and its child controls.
Notes to Inheritors
When overriding destroy_control() in a derived class, be sure to call the base class's destroy_control() method to ensure that the handle is destroyed.

◆ end_invoke()

auto xtd::forms::control::end_invoke ( xtd::async_result async) -> std::optional< xtd::object_ref >
nodiscardoverridevirtual

Retrieves the return value of the asynchronous operation represented by the async_result_invoke passed.

Parameters
asyncThe async_result_invoke that represents a specific invoke asynchronous operation, returned when calling begin_invoke(delegate).

Implements xtd::isynchronize_invoke.

◆ equals() [1/2]

auto xtd::forms::control::equals ( const xtd::object & obj) const -> bool
nodiscardoverridevirtualnoexcept

Determines whether the specified object is equal to the current object.

Parameters
objThe object to compare with the current object.
Returns
true if the specified object is equal to the current object. otherwise, false.

Reimplemented from xtd::object.

◆ equals() [2/2]

auto xtd::forms::control::equals ( const control & value) const -> bool
nodiscardoverridenoexcept

Determines whether the specified object is equal to the current object.

Parameters
otherThe object to compare with the current object.
Returns
true if the specified object is equal to the current object. otherwise, false.

◆ focus()

auto xtd::forms::control::focus ( ) -> bool

Sets input focus to the control.

Returns
true if the input focus request was successful; otherwise, false.
Remarks
The focus method returns true if the control successfully received input focus. The control can have the input focus while not displaying any visual cues of having the focus. This behavior is primarily observed by the unselectable controls listed below, or any controls derived from them.

◆ get_auto_size_mode()

auto xtd::forms::control::get_auto_size_mode ( ) const -> xtd::forms::auto_size_mode
nodiscard

Gets a value indicating how a control will behave when its auto_size property is enabled.

Returns
auto_size_mode One of the xtd::forms::auto_size_mode values.

◆ get_child_index() [1/2]

auto xtd::forms::control::get_child_index ( xtd::intptr child) const -> xtd::usize
nodiscard

Retrieves the index of a control within the control collection.

Parameters
childThe control to search for in the control collection.
Returns
A zero-based index value that represents the location of the specified child control within the control collection.
Exceptions
xtd::argument_exceptionThe child control is not in the control::control_collection.

◆ get_child_index() [2/2]

auto xtd::forms::control::get_child_index ( xtd::intptr child,
bool & throw_exception ) const -> xtd::usize
nodiscard

Retrieves the index of the specified child control within the control collection, and optionally raises an exception if the specified control is not within the control collection.

Parameters
childThe control to search for in the control collection.
throw_exceptiontrue to throw an exception if the control specified in the child parameter is not a control in the control::control_collection; otherwise, false.

◆ get_hash_code()

auto xtd::forms::control::get_hash_code ( ) const -> xtd::usize
nodiscardoverridevirtualnoexcept

Serves as a hash function for a particular type.

Returns
A hash code for the current object.

Reimplemented from xtd::object.

◆ hide()

virtual auto xtd::forms::control::hide ( ) -> void
virtual

Conceals the control from the user.

Remarks
Hiding the control is equivalent to setting the visible property to false. After the hide method is called, the visible property returns a value of false until the show method is called.

◆ invalidate() [1/6]

virtual auto xtd::forms::control::invalidate ( ) const -> void
virtual

Invalidates the entire surface of the control and causes the control to be redrawn.

Remarks
Calling the invalidate method does not force a synchronous paint; to force a synchronous paint, call the update method after calling the Invalidate method. When this method is called with no parameters, the entire client area is added to the update region.

◆ invalidate() [2/6]

virtual auto xtd::forms::control::invalidate ( bool invalidate_children) const -> void
virtual

Invalidates a specific region of the control and causes a paint message to be sent to the control. Optionally, invalidates the child controls assigned to the control.

Parameters
invalidate_childrentrue to invalidate the control's child controls; otherwise, false.
Remarks
Calling the invalidate method does not force a synchronous paint; to force a synchronous paint, call the update method after calling the Invalidate method. When this method is called with no parameters, the entire client area is added to the update region.

◆ invalidate() [3/6]

virtual auto xtd::forms::control::invalidate ( const xtd::drawing::rectangle & rect) const -> void
virtual

Invalidates the specified region of the control (adds it to the control's update region, which is the area that will be repainted at the next paint operation), and causes a paint message to be sent to the control.

Parameters
rectA xtd::drawing::rectangle that represents the region to invalidate.
Remarks
Calling the invalidate method does not force a synchronous paint; to force a synchronous paint, call the update method after calling the Invalidate method. When this method is called with no parameters, the entire client area is added to the update region.

◆ invalidate() [4/6]

virtual auto xtd::forms::control::invalidate ( const xtd::drawing::rectangle & rect,
bool invalidate_children ) const -> void
virtual

Invalidates the specified region of the control (adds it to the control's update region, which is the area that will be repainted at the next paint operation), and causes a paint message to be sent to the control. Optionally, invalidates the child controls assigned to the control.

Parameters
rectA xtd::drawing::rectangle that represents the region to invalidate.
invalidate_childrentrue to invalidate the control's child controls; otherwise, false.
Remarks
Calling the invalidate method does not force a synchronous paint; to force a synchronous paint, call the update method after calling the Invalidate method. When this method is called with no parameters, the entire client area is added to the update region.

◆ invalidate() [5/6]

virtual auto xtd::forms::control::invalidate ( const xtd::drawing::region & region) const -> void
virtual

Invalidates the specified region of the control (adds it to the control's update region, which is the area that will be repainted at the next paint operation), and causes a paint message to be sent to the control.

Parameters
regionA xtd::drawing::region that represents the region to invalidate.
Remarks
Calling the invalidate method does not force a synchronous paint; to force a synchronous paint, call the update method after calling the Invalidate method. When this method is called with no parameters, the entire client area is added to the update region.

◆ invalidate() [6/6]

virtual auto xtd::forms::control::invalidate ( const xtd::drawing::region & region,
bool invalidate_children ) const -> void
virtual

Invalidates the specified region of the control (adds it to the control's update region, which is the area that will be repainted at the next paint operation), and causes a paint message to be sent to the control. Optionally, invalidates the child controls assigned to the control.

Parameters
regionA xtd::drawing::region that represents the region to invalidate.
invalidate_childrentrue to invalidate the control's child controls; otherwise, false.
Remarks
Calling the invalidate method does not force a synchronous paint; to force a synchronous paint, call the update method after calling the Invalidate method. When this method is called with no parameters, the entire client area is added to the update region.

◆ invoke() [1/3]

auto xtd::forms::control::invoke ( xtd::delegate< void()> method) -> std::optional< xtd::object_ref >
overridevirtual

Executes the specified delegate on the thread that owns the control's underlying window handle.

Parameters
methodA delegate that contains a method to be called in the control's thread context.

Implements xtd::isynchronize_invoke.

◆ invoke() [2/3]

auto xtd::forms::control::invoke ( xtd::delegate< void(xtd::array< xtd::any_object >)> method,
const xtd::array< xtd::any_object > & args ) -> std::optional< xtd::object_ref >
overridevirtual

Executes the specified delegate, on the thread that owns the control's underlying window handle, with the specified list of arguments.

Parameters
methodA delegate to a method that takes parameters of the same number and type that are contained in the args parameter.
argsAn array of objects to pass as arguments to the specified method. This parameter can be null if the method takes no arguments.

Implements xtd::isynchronize_invoke.

◆ invoke() [3/3]

auto xtd::forms::control::invoke ( xtd::delegate< void(xtd::array< xtd::any_object >)> method,
const xtd::any_object & arg ) -> std::optional< xtd::object_ref >
overridevirtual

Executes the specified delegate, on the thread that owns the control's underlying window handle, with the specified list of arguments.

Parameters
methodA delegate to a method that takes parameters of the same number and type that are contained in the args parameter.
argsAn array of objects to pass as arguments to the specified method. This parameter can be null if the method takes no arguments.

Implements xtd::isynchronize_invoke.

◆ perform_layout()

auto xtd::forms::control::perform_layout ( ) -> void

Forces the control to apply layout logic to all its child controls.

Remarks
If the suspend_layout method was called before calling the perform_layout method, the xtd::forms::control::layout event is suppressed.

◆ point_to_client()

auto xtd::forms::control::point_to_client ( const xtd::drawing::point & p) const -> xtd::drawing::point
nodiscard

Computes the location of the specified screen point into client coordinates.

Parameters
pThe screen coordinate xtd::drawing::point to convert.
Returns
A xtd::drawing::point that represents the converted xtd::drawing::point, p, in client coordinates.

◆ point_to_screen()

auto xtd::forms::control::point_to_screen ( const xtd::drawing::point & p) const -> xtd::drawing::point
nodiscard

Computes the location of the specified client point into screen coordinates.

Parameters
pThe client coordinate xtd::drawing::point to convert.
Returns
A xtd::drawing::point that represents the converted xtd::drawing::point, p, in screen coordinates.

◆ post_message()

auto xtd::forms::control::post_message ( xtd::intptr hwnd,
xtd::int32 msg,
xtd::intptr wparam,
xtd::intptr lparam ) const -> bool

Places (posts) a message in the message queue with specified hwnd, message, wparam and lparam.

Parameters
hwndThe window handle of the message.
msgThe ID number for the message.
wparamThe WParam field of the message.
lparamThe LParam field of the message.
Returns
true if message posted; otherwise false.

◆ pre_process_message()

virtual auto xtd::forms::control::pre_process_message ( const xtd::forms::message & message) -> bool
virtual

Preprocesses keyboard or input messages within the message loop before they are dispatched.

Parameters
messageA xtd::forms::message, passed by reference, that represents the message to process. The possible values are WM_KEYDOWN, WM_SYSKEYDOWN, WM_CHAR, and WM_SYSCHAR.
Returns
true if the message was processed by the control; otherwise, false.
Remarks
pre_process_message is called by the application's message loop to preprocess input messages before they are dispatched. Possible values for the msg parameter are WM_KEYDOWN, WM_SYSKEYDOWN, WM_CHAR, and WM_SYSCHAR.

Reimplemented in xtd::forms::form.

◆ refresh()

virtual auto xtd::forms::control::refresh ( ) const -> void
virtual

Forces the control to invalidate its client area and immediately redraw itself and any child controls.

Notes to Inheritors
When overriding refresh() in a derived class, be sure to call the base class's refresh() method so the control and its child controls are invalidated and redrawn.

◆ resume_layout() [1/2]

auto xtd::forms::control::resume_layout ( ) -> void

Resumes usual layout logic.

Remarks
Calling the resume_layout method forces an immediate layout if there are any pending layout requests.
The suspend_layout and resume_layout methods are used in tandem to suppress multiple layout events while you adjust multiple attributes of the control. For example, you would typically call the suspend_layout method, then set the size, location, anchor, or dock properties of the control, and then call the resume_layout method to enable the changes to take effect.
There must be no pending calls to suspend_layout for resume_layout to be successfully called.

◆ resume_layout() [2/2]

auto xtd::forms::control::resume_layout ( bool perform_layout) -> void

Resumes usual layout logic, optionally forcing an immediate layout of pending layout requests.

Parameters
perform_layouttrue to execute pending layout requests; otherwise, false.
Remarks
Calling the resume_layout method forces an immediate layout if there are any pending layout requests. When the perform_layout parameter is set to true, an immediate layout occurs if there are any pending layout requests.
The suspend_layout and resume_layout methods are used in tandem to suppress multiple xtd::forms::control::layout events while you adjust multiple attributes of the control. For example, you would typically call the suspend_layout method, then set the size, location, anchor, or dock properties of the control, and then call the resume_layout method to enable the changes to take effect.
There must be no pending calls to suspend_layout for resume_layout to be successfully called.
Note
When adding several controls to a parent control, it is recommended that you call the suspend_layout method before initializing the controls to be added. After adding the controls to the parent control, call the resume_layout method. This will increase the performance of applications with many controls.

◆ send_message()

auto xtd::forms::control::send_message ( xtd::intptr hwnd,
xtd::int32 msg,
xtd::intptr wparam,
xtd::intptr lparam ) const -> xtd::intptr

Send a message with specified hwnd, message, wparam and lparam.

Parameters
hwndThe window handle of the message.
msgThe ID number for the message.
wparamThe WParam field of the message.
lparamThe LParam field of the message.
Returns
The return value of the message.

◆ set_auto_size_mode()

auto xtd::forms::control::set_auto_size_mode ( xtd::forms::auto_size_mode auto_size_mode) -> void

Sets a value indicating how a control will behave when its auto_size property is enabled.

Parameters
auto_size_modeOne of the xtd::forms::auto_size_mode values.

◆ set_bounds() [1/2]

auto xtd::forms::control::set_bounds ( xtd::int32 x,
xtd::int32 y,
xtd::int32 width,
xtd::int32 height ) -> void

Sets the bounds of the control to the specified location and size.

Parameters
xThe new left property value of the control.
yThe new top property value of the control.
widthThe new width property value of the control.
heightThe new height property value of the control.

◆ set_bounds() [2/2]

auto xtd::forms::control::set_bounds ( xtd::int32 x,
xtd::int32 y,
xtd::int32 width,
xtd::int32 height,
xtd::forms::bounds_specified specified ) -> void

Sets the specified bounds of the control to the specified location and size.

Parameters
xThe new left property value of the control.
yThe new top property value of the control.
widthThe new width property value of the control.
heightThe new height property value of the control.
specifiedA bitwise combination of the xtd::forms::bounds_specified values. For any parameter not specified, the current value will be used.

◆ show()

virtual auto xtd::forms::control::show ( ) -> void
virtual

Displays the control to the user.

Remarks
Showing the control is equivalent to setting the visible property to true. After the show method is called, the visible property returns a value of true until the hide method is called.

◆ suspend_layout()

auto xtd::forms::control::suspend_layout ( ) -> void

Temporarily suspends the layout logic for the control.

Remarks
The layout logic of the control is suspended until the resume_layout method is called.
The suspend_layout and resume_layout methods are used in tandem to suppress multiple xtd::forms::control::layout events while you adjust multiple attributes of the control. For example, you would typically call the suspend_layout method, then set the size, location, anchor, or dock properties of the control, and then call the resume_layout method to enable the changes to take effect.
There must be no pending calls to suspend_layout for resume_layout to be successfully called.
Note
When adding several controls to a parent control, it is recommended that you call the suspend_layout method before initializing the controls to be added. After adding the controls to the parent control, call the resume_layout method. This will increase the performance of applications with many controls.

◆ to_string()

auto xtd::forms::control::to_string ( ) const -> xtd::string
nodiscardoverridevirtualnoexcept

Returns a string containing the name of the control, if any.

Returns
A string containing the name of the control, if any, or class name if the control is unnamed.

Reimplemented from xtd::object.

Reimplemented in xtd::forms::month_calendar, xtd::forms::numeric_up_down, xtd::forms::progress_bar, xtd::forms::radio_button, xtd::forms::track_bar, and xtd::forms::up_down_button.

◆ update()

virtual auto xtd::forms::control::update ( ) const -> void
virtual

Causes the control to redraw the invalidated regions within its client area.

Remarks
Executes any pending requests for painting.
There are two ways to repaint a form and its contents:
  • You can use one of the overloads of the invalidate method with the update method.
  • You can call the refresh method, which forces the control to redraw itself and all its children. This is equivalent to setting the invalidate method to true and using it with update.
The invalidate method governs what gets painted or repainted. The update method governs when the painting or repainting occurs. If you use the invalidate and update methods together rather than calling refresh, what gets repainted depends on which overload of invalidate you use. The update method just forces the control to be painted immediately, but the invalidate method governs what gets painted when you call the update method.

◆ operator<<()

auto xtd::forms::control::operator<< ( control & child) -> control &

Add child control.

Parameters
parentA control that represents the parent or container control of the control.
childA control to add to parent.
Returns
Current control.

◆ operator>>()

auto xtd::forms::control::operator>> ( control & child) -> control &

Remove child control.

Parameters
parentA control that represents the parent or container control of the control.
childA control to remove to parent.
Returns
Current control.

◆ create() [1/24]

auto xtd::forms::control::create ( ) -> control
staticnodiscard

A factory to create a specified control.

Returns
New control created.

◆ create() [2/24]

auto xtd::forms::control::create ( const xtd::drawing::point & location) -> control
staticnodiscard

A factory to create a specified control with specified location.

Parameters
locationA xtd::drawing::point that represent location of the control.
Returns
New control created.

◆ create() [3/24]

auto xtd::forms::control::create ( const xtd::drawing::point & location,
const xtd::drawing::size & size ) -> control
staticnodiscard

A factory to create a specified control with specified location, and size.

Parameters
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
Returns
New control created.

◆ create() [4/24]

auto xtd::forms::control::create ( const xtd::drawing::point & location,
const xtd::drawing::size & size,
const xtd::string & name ) -> control
staticnodiscard

A factory to create a specified control with specified location, size, and name.

Parameters
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
nameThe name of the control.
Returns
New control created.

◆ create() [5/24]

auto xtd::forms::control::create ( const control & paren) -> control
staticnodiscard

A factory to create a specified control with specified parent.

Parameters
parentThe parent that contains the new created control.
Returns
New control created.

◆ create() [6/24]

auto xtd::forms::control::create ( const control & parent,
const xtd::drawing::point & location ) -> control
staticnodiscard

A factory to create a specified control with specified parent, location, size, and name.

Parameters
parentThe parent that contains the new created control.
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
nameThe name of the control.
Returns
New control created.

◆ create() [7/24]

auto xtd::forms::control::create ( const control & parent,
const xtd::drawing::point & location,
const xtd::drawing::size & size ) -> control
staticnodiscard

A factory to create a specified control with specified parent, location, and size.

Parameters
parentThe parent that contains the new created control.
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
Returns
New control created.

◆ create() [8/24]

auto xtd::forms::control::create ( const control & parent,
const xtd::drawing::point & location,
const xtd::drawing::size & size,
const xtd::string & name ) -> control
staticnodiscard

A factory to create a specified control with specified parent, location, size, and name.

Parameters
parentThe parent that contains the new created control.
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
nameThe name of the control.
Returns
New control created.

◆ create() [9/24]

template<typename control_t>
auto xtd::forms::control::create ( ) -> control_t
inlinestaticnodiscard

A factory to create a specified control.

Returns
New control created.

◆ create() [10/24]

template<typename control_t>
auto xtd::forms::control::create ( const xtd::drawing::point & location) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified location.

Parameters
locationA xtd::drawing::point that represent location of the control.
Returns
New control created.

◆ create() [11/24]

template<typename control_t>
auto xtd::forms::control::create ( const xtd::drawing::point & location,
const xtd::drawing::size & size ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified location, and size.

Parameters
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
Returns
New control created.

◆ create() [12/24]

template<typename control_t>
auto xtd::forms::control::create ( const xtd::drawing::point & location,
const xtd::drawing::size & size,
const xtd::string & name ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified location, size, and name.

Parameters
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
nameThe name of the control.
Returns
New control created.

◆ create() [13/24]

template<typename control_t>
auto xtd::forms::control::create ( const control & parent) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified parent.

Parameters
parentThe parent that contains the new created control.
Returns
New control created.

◆ create() [14/24]

template<typename control_t>
auto xtd::forms::control::create ( const control & parent,
const xtd::drawing::point & location ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified parent, and location.

Parameters
parentThe parent that contains the new created control.
locationA xtd::drawing::point that represent location of the control.
Returns
New control created.

◆ create() [15/24]

template<typename control_t>
auto xtd::forms::control::create ( const control & parent,
const xtd::drawing::point & location,
const xtd::drawing::size & size ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified parent, location, and size.

Parameters
parentThe parent that contains the new created control.
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
Returns
New control created.

◆ create() [16/24]

template<typename control_t>
auto xtd::forms::control::create ( const control & parent,
const xtd::drawing::point & location,
const xtd::drawing::size & size,
const xtd::string & name ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified parent, location, size, and name.

Parameters
parentThe parent that contains the new created control.
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
nameThe name of the control.
Returns
New control created.

◆ create() [17/24]

template<typename control_t>
auto xtd::forms::control::create ( const xtd::string & text) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified text.

Parameters
textA string that represent text of the control.
Returns
New control created.

◆ create() [18/24]

template<typename control_t>
auto xtd::forms::control::create ( const xtd::string & text,
const xtd::drawing::point & location ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified text, and location.

Parameters
textA string that represent text of the control.
locationA xtd::drawing::point that represent location of the control.
Returns
New control created.

◆ create() [19/24]

template<typename control_t>
auto xtd::forms::control::create ( const xtd::string & text,
const xtd::drawing::point & location,
const xtd::drawing::size & size ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified text, location, and size.

Parameters
textA string that represent text of the control.
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
Returns
New control created.

◆ create() [20/24]

template<typename control_t>
auto xtd::forms::control::create ( const xtd::string & text,
const xtd::drawing::point & location,
const xtd::drawing::size & size,
const xtd::string & name ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified text, location,size, and name.

Parameters
textA string that represent text of the control.
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
nameThe name of the control.
Returns
New control created.

◆ create() [21/24]

template<typename control_t>
auto xtd::forms::control::create ( const control & parent,
const xtd::string & text ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified parent, and text.

Parameters
parentThe parent that contains the new created control.
textA string that represent text of the control.
Returns
New control created.

◆ create() [22/24]

template<typename control_t>
auto xtd::forms::control::create ( const control & parent,
const xtd::string & text,
const xtd::drawing::point & location ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified parent, text, and location.

Parameters
parentThe parent that contains the new created control.
textA string that represent text of the control.
locationA xtd::drawing::point that represent location of the control.
Returns
New control created.

◆ create() [23/24]

template<typename control_t>
auto xtd::forms::control::create ( const control & parent,
const xtd::string & text,
const xtd::drawing::point & location,
const xtd::drawing::size & size ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified parent, text, location, and size.

Parameters
parentThe parent that contains the new created control.
textA string that represent text of the control.
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
Returns
New control created.

◆ create() [24/24]

template<typename control_t>
auto xtd::forms::control::create ( const control & parent,
const xtd::string & text,
const xtd::drawing::point & location,
const xtd::drawing::size & size,
const xtd::string & name ) -> control_t
inlinestaticnodiscard

A factory to create a specified control with specified parent, text, location, size, and name.

Parameters
parentThe parent that contains the new created control.
textA string that represent text of the control.
locationA xtd::drawing::point that represent location of the control.
sizeA xtd::drawing::size that represent size of the control.
nameThe name of the control.
Returns
New control created.

◆ from_child_handle()

auto xtd::forms::control::from_child_handle ( xtd::intptr handle) -> std::optional< xtd::forms::control_ref >
staticnodiscard

Retrieves the control that contains the specified handle.

Parameters
handleThe window handle (HWND) to search for.
Returns
The control that represents the control associated with the specified handle; returns null if no control with the specified handle is found.
Remarks
This method searches up the window handle parent chain until it finds a handle that is associated with a control. This method is more reliable than the from_handle method, because it correctly returns controls that own more than one handle.

◆ from_handle()

auto xtd::forms::control::from_handle ( xtd::intptr handle) -> std::optional< xtd::forms::control_ref >
staticnodiscard

Returns the control that is currently associated with the specified handle.

Parameters
handleThe window handle (HWND) to search for.
Returns
A control that represents the control associated with the specified handle; returns null if no control with the specified handle is found.

◆ control_state()

auto xtd::forms::control::control_state ( ) const -> xtd::forms::visual_styles::control_state
nodiscardprotectednoexcept

Gets state.

Returns
One of xtd::forms::visual_styles::control_state values.

◆ create_params()

virtual auto xtd::forms::control::create_params ( ) const -> xtd::forms::create_params
nodiscardprotectedvirtualnoexcept

Gets the required creation parameters when the control handle is created.

Returns
A create_params that contains the required creation parameters when the handle to the control is created.
Remarks
The create_params property should not be overridden and used to adjust the properties of your derived control. Properties such as the create_params::caption, create_params::width, and create_params::height should be set by the corresponding properties in your control such as control::text, control::width and control::height. The create_params should only be extended when you are wrapping a standard Windows control class or to set styles not provided by the forms namespace.
Notes for inheritors
When overriding the create_params property in a derived class, use the base class's create_params property to extend the base implementation. Otherwise, you must provide all the implementation.

Reimplemented in xtd::forms::button, xtd::forms::button_base, xtd::forms::check_box, xtd::forms::checked_list_box, xtd::forms::choice, xtd::forms::collapsible_panel, xtd::forms::color_picker, xtd::forms::combo_box, xtd::forms::command_link_button, xtd::forms::date_time_picker, xtd::forms::domain_up_down, xtd::forms::font_picker, xtd::forms::form, xtd::forms::group_box, xtd::forms::h_scroll_bar, xtd::forms::label, xtd::forms::light_button, xtd::forms::list_box, xtd::forms::loading_indicator, xtd::forms::month_calendar, xtd::forms::numeric_up_down, xtd::forms::panel, xtd::forms::picture_box, xtd::forms::popup_panel, xtd::forms::progress_bar, xtd::forms::radio_button, xtd::forms::scroll_bar, xtd::forms::scrollable_control, xtd::forms::status_bar, xtd::forms::tab_control, xtd::forms::tab_page, xtd::forms::text_box, xtd::forms::text_box_base, xtd::forms::toggle_button, xtd::forms::tool_bar, xtd::forms::track_bar, xtd::forms::up_down_base, xtd::forms::up_down_button, xtd::forms::user_control, and xtd::forms::v_scroll_bar.

◆ default_back_color()

virtual auto xtd::forms::control::default_back_color ( ) const -> xtd::drawing::color
nodiscardprotectedvirtualnoexcept

Gets the default background color of the control.

Returns
The default background color of the control. The default is control.
Remarks
This is the default back_color property value of a generic top-level control. Derived classes can have different defaults.

Reimplemented in xtd::forms::date_time_picker, xtd::forms::domain_up_down, xtd::forms::list_box, xtd::forms::list_control, xtd::forms::month_calendar, xtd::forms::numeric_up_down, and xtd::forms::text_box.

◆ default_cursor()

virtual auto xtd::forms::control::default_cursor ( ) const -> xtd::forms::cursor
nodiscardprotectedvirtualnoexcept

Gets the default cursor for the control.

Returns
An object of type xtd::forms::cursor representing the current default cursor.

Reimplemented in xtd::forms::splitter, and xtd::forms::text_box_base.

◆ default_font()

virtual auto xtd::forms::control::default_font ( ) const -> xtd::drawing::font
nodiscardprotectedvirtualnoexcept

Gets the default font of the control.

Returns
The default font of the control. The value returned will vary depending on the user's operating system the local culture setting of their system.

Reimplemented in xtd::forms::status_bar, and xtd::forms::tool_bar.

Examples
test_forms.cpp.

◆ default_fore_color()

virtual auto xtd::forms::control::default_fore_color ( ) const -> xtd::drawing::color
nodiscardprotectedvirtualnoexcept

Gets the default foreground color of the control.

Returns
The default foreground color of the control. The default is control_text.

Reimplemented in xtd::forms::date_time_picker, xtd::forms::domain_up_down, xtd::forms::list_box, xtd::forms::list_control, xtd::forms::month_calendar, xtd::forms::numeric_up_down, and xtd::forms::text_box.

◆ default_size()

◆ create_handle()

virtual auto xtd::forms::control::create_handle ( ) -> void
protectedvirtual

Creates a handle for the control.

Remarks
You typically should not call the create_handle method directly. The preferred method is to call the create_control method, which forces a handle to be created for the control and its child controls when the control is created.
Notes to Inheritors
When overriding create_handle() in a derived class, be sure to call the base class's create_handle() method to ensure that the handle is created.

◆ destroy_handle()

virtual auto xtd::forms::control::destroy_handle ( ) -> void
protectedvirtual

Destroys the handle associated with the control.

Notes to Inheritors
When overriding destroy_handle() in a derived class, be sure to call the base class's destroy_handle() method to ensure that the handle is destroyed.

Reimplemented in xtd::forms::tab_page.

◆ def_wnd_proc()

virtual auto xtd::forms::control::def_wnd_proc ( xtd::forms::message & message) -> void
protectedvirtual

Sends the specified message to the default window procedure.

Parameters
messageThe Windows Message to process.

◆ get_style()

auto xtd::forms::control::get_style ( xtd::forms::control_styles flag) const -> bool
nodiscardprotectednoexcept

Retrieves the value of the specified control style bit for the control.

Parameters
flagThe control_styles bit to return the value from.
Returns
true if the specified control style bit is set to true; otherwise, false.
Remarks
Control style bit flags are used to categorize supported behavior. A control can enable a style by calling the set_style method and passing in the appropriate control_styles bit and the bool value to set the bit to. To determine the value assigned to a specified control_styles bit, use the get_style method and pass in the control_styles member to evaluate.

◆ measure_control()

◆ measure_text()

auto xtd::forms::control::measure_text ( ) const -> xtd::drawing::size
nodiscardprotectednoexcept

Measure this control text.

Returns
The xtd::drawing::size size of this control text.

◆ on_auto_size_changed()

virtual auto xtd::forms::control::on_auto_size_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::auto_size_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_back_color_changed()

virtual auto xtd::forms::control::on_back_color_changed ( const xtd::event_args & e) -> void
protectedvirtual

◆ on_background_image_changed()

virtual auto xtd::forms::control::on_background_image_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::background_image_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_background_image_layout_changed()

virtual auto xtd::forms::control::on_background_image_layout_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::background_image_layout_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_control_appearance_changed()

virtual auto xtd::forms::control::on_control_appearance_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the control::control_appearance_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_click()

virtual auto xtd::forms::control::on_click ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::click event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::button.

◆ on_client_size_changed()

virtual auto xtd::forms::control::on_client_size_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::client_size_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_control_added()

virtual auto xtd::forms::control::on_control_added ( const xtd::forms::control_event_args & e) -> void
protectedvirtual

◆ on_control_removed()

virtual auto xtd::forms::control::on_control_removed ( const xtd::forms::control_event_args & e) -> void
protectedvirtual

◆ on_create_control()

virtual auto xtd::forms::control::on_create_control ( ) -> void
protectedvirtual

Raises the xtd::forms::control::create_control event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_cursor_changed()

virtual auto xtd::forms::control::on_cursor_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::cursor_changed event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::link_label.

◆ on_destroy_control()

virtual auto xtd::forms::control::on_destroy_control ( ) -> void
protectedvirtual

Raises the xtd::forms::control::destroy_control event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_dock_changed()

virtual auto xtd::forms::control::on_dock_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::dock_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_double_click()

virtual auto xtd::forms::control::on_double_click ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::double_click event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_enabled_changed()

virtual auto xtd::forms::control::on_enabled_changed ( const xtd::event_args & e) -> void
protectedvirtual

◆ on_fore_color_changed()

virtual auto xtd::forms::control::on_fore_color_changed ( const xtd::event_args & e) -> void
protectedvirtual

◆ on_font_changed()

virtual auto xtd::forms::control::on_font_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::font_changed event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::button_base, xtd::forms::group_box, and xtd::forms::label.

◆ on_got_focus()

virtual auto xtd::forms::control::on_got_focus ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::got_focus event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::radio_button.

◆ on_handle_created()

◆ on_handle_destroyed()

virtual auto xtd::forms::control::on_handle_destroyed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::handle_destroyed event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::form, xtd::forms::status_bar, and xtd::forms::tool_bar.

◆ on_help_requested()

virtual auto xtd::forms::control::on_help_requested ( xtd::forms::help_event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::help_requested event.

Parameters
eA xtd::forms::help_event_args that contains the event data.

◆ on_key_down()

virtual auto xtd::forms::control::on_key_down ( xtd::forms::key_event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::key_down event.

Parameters
eAn xtd::event_args that contains the event data.
Examples
test_forms.cpp.

◆ on_key_press()

virtual auto xtd::forms::control::on_key_press ( xtd::forms::key_press_event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::key_press event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_key_up()

virtual auto xtd::forms::control::on_key_up ( xtd::forms::key_event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::key_up event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_layout()

◆ on_location_changed()

virtual auto xtd::forms::control::on_location_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::location_changed event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::form.

◆ on_lost_focus()

virtual auto xtd::forms::control::on_lost_focus ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::lost_focus event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::domain_up_down, xtd::forms::numeric_up_down, and xtd::forms::radio_button.

◆ on_mouse_click()

virtual auto xtd::forms::control::on_mouse_click ( const xtd::forms::mouse_event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::mouse_click event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::link_label.

◆ on_mouse_double_click()

virtual auto xtd::forms::control::on_mouse_double_click ( const xtd::forms::mouse_event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::mouse_double_click event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_mouse_down()

virtual auto xtd::forms::control::on_mouse_down ( const xtd::forms::mouse_event_args & e) -> void
protectedvirtual

◆ on_mouse_enter()

virtual auto xtd::forms::control::on_mouse_enter ( const xtd::event_args & e) -> void
protectedvirtual

◆ on_mouse_horizontal_wheel()

virtual auto xtd::forms::control::on_mouse_horizontal_wheel ( const xtd::forms::mouse_event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::mouse_horizontal_wheel event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_mouse_leave()

virtual auto xtd::forms::control::on_mouse_leave ( const xtd::event_args & e) -> void
protectedvirtual

◆ on_mouse_move()

virtual auto xtd::forms::control::on_mouse_move ( const xtd::forms::mouse_event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::mouse_move event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::link_label, xtd::forms::radio_button, and xtd::forms::splitter.

◆ on_mouse_up()

virtual auto xtd::forms::control::on_mouse_up ( const xtd::forms::mouse_event_args & e) -> void
protectedvirtual

◆ on_mouse_wheel()

virtual auto xtd::forms::control::on_mouse_wheel ( const xtd::forms::mouse_event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::mouse_wheel event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_move()

virtual auto xtd::forms::control::on_move ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::move event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_paint()

◆ on_paint_background()

virtual auto xtd::forms::control::on_paint_background ( xtd::forms::paint_event_args & e) -> void
protectedvirtual

Paints the background of the xtd::forms::control.

Parameters
eAn xtd::event_args that contains the event data.
Remarks
The xtd::forms::control::on_paint_background method enables derived classes to handle Windows background erase requests.

◆ on_parent_back_color_changed()

virtual auto xtd::forms::control::on_parent_back_color_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::parent_back_color_changed event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::button_base.

◆ on_parent_cursor_changed()

virtual auto xtd::forms::control::on_parent_cursor_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::parent_cursor_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_parent_changed()

virtual auto xtd::forms::control::on_parent_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::parent_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_parent_enabled_changed()

virtual auto xtd::forms::control::on_parent_enabled_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::control::enabled_changed event when the xtd::control::enabled property value of the control's container changes..

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::seven_segment_display.

◆ on_parent_fore_color_changed()

virtual auto xtd::forms::control::on_parent_fore_color_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::parent_fore_color_changed event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::button_base.

◆ on_parent_font_changed()

virtual auto xtd::forms::control::on_parent_font_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::parent_font_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_resize()

virtual auto xtd::forms::control::on_resize ( const xtd::event_args & e) -> void
protectedvirtual

◆ on_region_changed()

virtual auto xtd::forms::control::on_region_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::region_changed event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::form, and xtd::forms::popup_panel.

◆ on_right_to_left_changed()

virtual auto xtd::forms::control::on_right_to_left_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::right_to_left_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_size_changed()

virtual auto xtd::forms::control::on_size_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::size_changed event.

Parameters
eAn xtd::event_args that contains the event data.

Reimplemented in xtd::forms::lcd_label.

◆ on_style_sheet_changed()

virtual auto xtd::forms::control::on_style_sheet_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::style_sheet_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_system_colors_changed()

virtual auto xtd::forms::control::on_system_colors_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the control::system_colors_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_tab_stop_changed()

virtual auto xtd::forms::control::on_tab_stop_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::tab_stop_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ on_text_changed()

virtual auto xtd::forms::control::on_text_changed ( const xtd::event_args & e) -> void
protectedvirtual

◆ on_visible_changed()

virtual auto xtd::forms::control::on_visible_changed ( const xtd::event_args & e) -> void
protectedvirtual

Raises the xtd::forms::control::visible_changed event.

Parameters
eAn xtd::event_args that contains the event data.

◆ recreate_handle()

virtual auto xtd::forms::control::recreate_handle ( ) -> void
protectedvirtual

Forces the re-creation of the handle for the control.

Remarks
The recreate_handle method is called whenever parameters are needed for a new control, but using a call from update_styles to create_params is insufficient. This method also calls destroy_handle and create_handle and sets recreating_handle to true.

◆ set_bounds_core()

virtual auto xtd::forms::control::set_bounds_core ( xtd::int32 x,
xtd::int32 y,
xtd::int32 width,
xtd::int32 height,
xtd::forms::bounds_specified specified ) -> void
protectedvirtual

Performs the work of setting the specified bounds of this control.

Parameters
xThe new left property value of the control.
yThe new top property value of the control.
widthThe new width property value of the control.
heightThe new height property value of the control.
specifiedA bitwise combination of the bounds_specified values.
Remarks
Typically, the parameters that correspond to the bounds not included in the specified parameter are passed in with their current values. For example, the height, width, or the y or y properties of the location property can be passed in with a reference to the current instance of the control. However all values passed in are honored and applied to the control.
The specified parameter represents the elements of the controls Bounds changed by your application. For example, if you change the size of the control, the specified parameter value is the size value of bounds_specified. However, if the size is adjusted in response to the dock property being set, the specified parameter value is the none value of bounds_specified.
Notes to Inheritors
When overriding set_bounds_core(int32, int32, int32, int32, bounds_specified) in a derived class, be sure to call the base class's set_bounds_core(int32, int32, int32, int32, bounds_specified) method to force the bounds of the control to change. Derived classes can add size restrictions to the set_bounds_core(int32, int32, int32, int32, bounds_specified) method.

Reimplemented in xtd::forms::choice, xtd::forms::seven_segment_display, and xtd::forms::track_bar.

◆ set_can_focus()

auto xtd::forms::control::set_can_focus ( bool value) -> void
protected

Sets a value indicating whether the control can receive focus.

Parameters
valuetrue if the control can receive focus; otherwise, false.
Remarks
In order for a control to receive input focus, the control must have a handle assigned to it, and the visible and enabled properties must both be set to true for both the control and all its parent controls, and the control must be a form or the control's outermost parent must be a form.

◆ set_text()

virtual auto xtd::forms::control::set_text ( const xtd::string & text) -> void
protectedvirtual

Sets the text associated with this control.

Parameters
textThe text associated with this control.
Returns
Current control.

◆ set_client_size_core()

virtual auto xtd::forms::control::set_client_size_core ( xtd::int32 width,
xtd::int32 height ) -> void
protectedvirtual

Sets the size of the client area of the control.

Parameters
widthThe client area width, in pixels.
heightThe client area height, in pixels.
Remarks
The client area starts at the (0, 0) location and extends to the (width, height) location.
Typically, you should not set the client_size of the control.
Notes to Inheritors
When overriding set_client_size_core(int32, int32) in a derived class, be sure to call the base class's set_client_size_core(int32, int32) method so that the client_size property is adjusted.

Reimplemented in xtd::forms::choice, xtd::forms::seven_segment_display, and xtd::forms::track_bar.

◆ set_parent()

auto xtd::forms::control::set_parent ( xtd::intptr handle) -> void
protected

Sets the parent handle of the control.

Parameters
handleThe parent handle.

◆ set_style()

auto xtd::forms::control::set_style ( xtd::forms::control_styles flag,
bool value ) -> void
protected

Sets a specified control_styles flag to either true or false.

Parameters
flagThe control_styles bit to set.
valuetrue to apply the specified style to the control; otherwise, false.
Remarks
Control style bit flags are used to categorize supported behavior. A control can enable a style by calling the set_style method and passing in the appropriate control_styles bit (or bits) and the bool value to set the bit(s) to. To determine the value assigned to a specified control_styles bit, use the get_style method and pass in the control_styles member to evaluate.
Warning
Setting the control style bits can substantially change the behavior of the control. Review the control_styles enumeration documentation to understand the effects of changing the control style bits before calling the set_style method.

◆ wnd_proc()

virtual auto xtd::forms::control::wnd_proc ( xtd::forms::message & m) -> void
protectedvirtual

◆ set_mouse_buttons()

auto xtd::forms::control::set_mouse_buttons ( xtd::forms::mouse_buttons value) -> void
staticprotected

Sets a value indicating which of the mouse buttons is in a pressed state.

Parameters
valueA bitwise combination of the mouse_buttons enumeration values. The default is none.

Member Data Documentation

◆ auto_size_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::auto_size_changed

Occurs when the value of the xtd::forms::control::auto_size property changes.

Remarks
This event is raised if the xtd::forms::control::auto_size property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ back_color_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::back_color_changed

Occurs when the value of the xtd::forms::control::back_color property changes.

Remarks
This event is raised if the xtd::forms::control::back_color property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ background_image_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::background_image_changed

Occurs when the value of the xtd::forms::control::background_image property changes.

Remarks
This event is raised if the xtd::forms::control::background_image property is changed by either a programmatic modification or user interaction
For more information about handling events, see Handling and Raising Events.

◆ background_image_layout_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::background_image_layout_changed

Occurs when the value of the xtd::forms::control::background_image_layout property changes.

Remarks
This event is raised if the xtd::forms::control::background_image_layout property is changed by either a programmatic modification or user interaction
For more information about handling events, see Handling and Raising Events.

◆ control_appearance_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::control_appearance_changed

Occurs when the value of the xtd::forms::control::control_appearance property changes.

Remarks
This event is raised if the control_appearance property is changed by either a programmatic modification or user interaction
For more information about handling events, see Handling and Raising Events.

◆ click

xtd::event<control, xtd::event_handler> xtd::forms::control::click

Occurs when the xtd::forms::control is clicked.

Remarks
The xtd::forms::control::click event passes an xtd::event_args to its event handler, so it only indicates that a click has occurred. If you need more specific mouse information (button, number of clicks, wheel rotation, or location), use the xtd::forms::control::mouse_click event. However, the xtd::forms::control::mouse_click event will not be raised if the click is caused by action other than that of the mouse, such as pressing the ENTER key.
A double-click is determined by the mouse settings of the user's operating system. The user can set the time between clicks of a mouse button that should be considered a double-click rather than two clicks. The xtd::forms::control::click event is raised every time a control is double-clicked. For example, if you have event handlers for the xtd::forms::control::click and xtd::forms::control::double_click events of a xtd::forms::form, the xtd::forms::control::click and xtd::forms::control::double_click events are raised when the form is double-clicked and both methods are called. If a control is double-clicked and that control does not support the xtd::forms::control::double_click event, the xtd::forms::control::click event might be raised twice.
You must set the standard_click value of xtd::forms::control_styles to true for this event to be raised.
Note
The following events are not raised for the xtd::forms::tab_control class unless there is at least one xtd::forms::tab_page in the xtd::forms::tab_control. xtd::forms::tab_control::tab_pages collection: xtd::forms::control::click, xtd::forms::control::double_click, xtd::forms::control::mouse_down, xtd::forms::control::mouse_up, xtd::forms::control::mouse_hover, xtd::forms::control::mouse_enter, xtd::forms::control::mouse_leave and xtd::forms::control::mouse_move. If there is at least one xtd::forms::tab_page in the collection, and the user interacts with the tab control's header (where the xtd::forms::tab_page names appear), the xtd::forms::tab_control raises the appropriate event. However, if the user interaction is within the client area of the tab page, the xtd::forms::tab_page raises the appropriate event.
Notes to Inheritors
Inheriting from a standard Windows Forms control and changing the standard_click or standard_double_click values of xtd::forms::control_styles to true can cause unexpected behavior or have no effect at all if the control does not support the click or xtd::forms::control::double_click events.
Remarks
The following table lists Windows Forms controls and which event (xtd::forms::control::click or xtd::forms::control::double_click) is raised in response to the mouse action specified.
Control Left Mouse Click Left Mouse Double Click Right Mouse Click Right Mouse Click Middle Mouse Click Middle Mouse Double Click XButton1 Mouse Click XButton1 Mouse Double-Click XButton2 Mouse Click XButton2 Mouse Double-Click
xtd::forms::month_calendar, xtd::forms::date_time_picker, xtd::forms::h_scroll_bar, xtd::forms::v_scroll_bar none none none none none none none none none none
xtd::forms::button, xtd::forms::check_box, xtd::forms::color_picker, xtd::forms::command_link_button, xtd::forms::font_picker, xtd::forms::rich_text_box, xtd::forms::radio_button, xtd::forms::switch_button, xtd::forms::toggle_button click click, click none none none none none none none none
xtd::forms::list_box, xtd::forms::checked_list_box, xtd::forms::choice, xtd::forms::combo_box click click, double_click none none none none none none none none
xtd::forms::text_box, xtd::forms::domain_up_down, xtd::forms::numeric_up_down click click, double_click none none none none none none none none
* xtd::forms::tree_view, * xtd::forms::list_view click click, double_click click click, double_click none none none none none none
xtd::forms::progress_bar, xtd::forms::track_bar click click, click click click, click click click, click click click, click click click, click
xtd::forms::form, xtd::forms::collapsible_panel, xtd::forms::data_grid, xtd::forms::dot_matrix_display, xtd::forms::label, xtd::forms::lcd_label, xtd::forms::link_label, xtd::forms::nine_segment_display, xtd::forms::seven_segment_display, xtd::forms::sixteen_segment_display, xtd::forms::panel, xtd::forms::group_box, xtd::forms::picture_box, xtd::forms::splitter, xtd::forms::status_bar, xtd::forms::tool_bar, xtd::forms::tab_page, ** xtd::forms::tab_control click click, double_click click click, double_click click click, double_click click click, double_click click click, double_click

* The mouse pointer must be over a child object (xtd::forms::tree_node or xtd::forms::list_view_item).
** The xtd::forms::tab_control must have at least one xtd::forms::tab_page in its xtd::forms::tab_pages collection.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
static auto write_line() -> void
Writes a line terminator to the trace listeners in the listeners collection.
Definition trace.hpp:326
xtd::event< control, xtd::event_handler > click
Occurs when the xtd::forms::control is clicked.
Definition control.hpp:1476
Remarks
For more information about handling events, see Handling and Raising Events.

◆ client_size_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::client_size_changed

Occurs when the value of the xtd::forms::control::client_size property changes.

Remarks
This event is raised if the xtd::forms::control::client_size property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ cursor_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::cursor_changed

Occurs when the value of the xtd::forms::control::cursor property changes.

Remarks
This event is raised if the xtd::forms::control::cursor property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ control_added

xtd::event<control, xtd::forms::control_event_handler> xtd::forms::control::control_added

Occurs when a new xtd::forms::control::control is added to the xtd::forms::control::control_collection.

Remarks
For more information about handling events, see Handling and Raising Events.

◆ control_removed

xtd::event<control, xtd::forms::control_event_handler> xtd::forms::control::control_removed

Occurs when a new xtd::forms::control:: is removed to the xtd::forms::control::control_collection.

Remarks
For more information about handling events, see Handling and Raising Events.

◆ dock_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::dock_changed

Occurs when the value of the xtd::forms::control::dock property changes.

Remarks
This event is raised if the xtd::forms::control::dock property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ double_click

xtd::event<control, xtd::event_handler> xtd::forms::control::double_click

Occurs when the xtd::forms::control is double-clicked.

Remarks
A double-click is determined by the mouse settings of the user's operating system. The user can set the time between clicks of a mouse button that should be considered a double-click rather than two clicks. The click event is raised every time a control is double-clicked. For example, if you have event handlers for the xtd::forms::control::click and xtd::forms::control::double_click events of a xtd::forms::form, the xtd::forms::control::click and xtd::forms::control::double_click events are raised when the form is double-clicked and both methods are called. If a control is double-clicked and that control does not support the xtd::forms::control::double_click event, the click event might be raised twice.
You must set the standard_double_click and standard_click value of xtd::forms::control_styles to true for this event to be raised.
Note
The following events are not raised for the xtd::forms::tab_control class unless there is at least one xtd::forms::tab_page in the xtd::forms::tab_control. xtd::forms::tab_control::tab_pages collection: xtd::forms::control::click, xtd::forms::control::double_click, xtd::forms::control::mouse_down, xtd::forms::control::mouse_up, xtd::forms::control::mouse_hover, xtd::forms::control::mouse_enter, xtd::forms::control::mouse_leave and xtd::forms::control::mouse_move. If there is at least one xtd::forms::tab_page in the collection, and the user interacts with the tab control's header (where the xtd::forms::tab_page names appear), the xtd::forms::tab_control raises the appropriate event. However, if the user interaction is within the client area of the tab page, the xtd::forms::tab_page raises the appropriate event.
Notes to Inheritors
Inheriting from a standard Windows Forms control and changing the standard_click or standard_double_click values of xtd::forms::control_styles to true can cause unexpected behavior or have no effect at all if the control does not support the xtd::forms::control::click or xtd::forms::control::double_click events.
Remarks
The following table lists Windows Forms controls and which event (xtd::forms::control::click or xtd::forms::control::double_click) is raised in response to the mouse action specified.
Control Left Mouse Click Left Mouse Double Click Right Mouse Click Right Mouse Click Middle Mouse Click Middle Mouse Double Click XButton1 Mouse Click XButton1 Mouse Double-Click XButton2 Mouse Click XButton2 Mouse Double-Click
xtd::forms::month_calendar, xtd::forms::date_time_picker, xtd::forms::h_scroll_bar, xtd::forms::v_scroll_bar none none none none none none none none none none
xtd::forms::button, xtd::forms::check_box, xtd::forms::color_picker, xtd::forms::command_link_button, xtd::forms::font_picker, xtd::forms::rich_text_box, xtd::forms::radio_button, xtd::forms::switch_button, xtd::forms::toggle_button click click, click none none none none none none none none
xtd::forms::list_box, xtd::forms::checked_list_box, xtd::forms::choice, xtd::forms::combo_box click click, double_click none none none none none none none none
xtd::forms::text_box, xtd::forms::domain_up_down, xtd::forms::numeric_up_down click click, double_click none none none none none none none none
* xtd::forms::tree_view, * xtd::forms::list_view click click, double_click click click, double_click none none none none none none
xtd::forms::progress_bar, xtd::forms::track_bar click click, click click click, click click click, click click click, click click click, click
xtd::forms::form, xtd::forms::collapsible_panel, xtd::forms::data_grid, xtd::forms::dot_matrix_display, xtd::forms::label, xtd::forms::lcd_label, xtd::forms::link_label, xtd::forms::nine_segment_display, xtd::forms::seven_segment_display, xtd::forms::sixteen_segment_display, xtd::forms::panel, xtd::forms::group_box, xtd::forms::picture_box, xtd::forms::splitter, xtd::forms::status_bar, xtd::forms::tool_bar, xtd::forms::tab_page, ** xtd::forms::tab_control click click, double_click click click, double_click click click, double_click click click, double_click click click, double_click

* The mouse pointer must be over a child object (xtd::forms::tree_node or xtd::forms::list_view_item).
** The xtd::forms::tab_control must have at least one xtd::forms::tab_page in its xtd::forms::tab_pages collection.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ got_focus

xtd::event<control, xtd::event_handler> xtd::forms::control::got_focus

Occurs when the xtd::forms::control receives focus.

Remarks
When you change the focus by using the keyboard (TAB, SHIFT+TAB, and so on), by calling the select or select_next_control methods, or by setting the container_control::active_control property to the current form, focus events occur in the following order:
  1. xtd::forms::control::enter event
  2. xtd::forms::control::got_focus event
  3. xtd::forms::control::leave event
  4. xtd::forms::control::validating event
  5. xtd::forms::control::validated event
  6. xtd::forms::control::lost_focus event
When you change the focus by using the mouse or by calling the focus method, focus events occur in the following order:
  1. xtd::forms::control::enter event
  2. xtd::forms::control::got_focus event
  3. xtd::forms::control::lost_focus event
  4. xtd::forms::control::leave event
  5. xtd::forms::control::validating event
  6. xtd::forms::control::validated event
If the causes_validation property is set to false, the xtd::forms::control::validating and xtd::forms::control::validated events are suppressed.
Note The xtd::forms::control::got_focus and xtd::forms::control::lost_focus events are low-level focus events that are tied to the WM_KILLFOCUS and WM_SETFOCUS Windows messages. Typically, the xtd::forms::control::got_focus and xtd::forms::control::lost_focus events are only used when updating when writing custom controls. Instead the enter and leave events should be used for all controls except the xtd::forms::form class, which uses the activated and deactivate events.
Warning
Do not attempt to set focus from within the xtd::forms::control::enter, xtd::forms::control::got_focus, xtd::forms::control::leave, xtd::forms::control::lost_focus, xtd::forms::control::validating, or xtd::forms::control::validated event handlers. Doing so can cause your application or the operating system to stop responding.
Remarks
For more information about handling events, see Handling and Raising Events.

◆ handle_created

xtd::event<control, xtd::event_handler> xtd::forms::control::handle_created

Occurs when a handle is created for the xtd::forms::control.

Remarks
A handle is created when the xtd::forms::control is displayed for the first time. For example, if a xtd::forms::control is created that has visible set to false, the xtd::forms::control::handle_created event will not be raised until visible is set to true.
For more information about handling events, see Handling and Raising Events.

◆ handle_destroyed

xtd::event<control, xtd::event_handler> xtd::forms::control::handle_destroyed

Occurs when the control's handle is in the process of being destroyed.

Remarks
During the xtd::forms::control::handle_destroyed event, the control is still a valid Windows control and the handle can be recreated by calling the recreate_handle method.
For more information about handling events, see Handling and Raising Events.

◆ enabled_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::enabled_changed

Occurs when the value of the xtd::forms::control::enabled property changes.

Remarks
This event is raised if the xtd::forms::control::enabled property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ fore_color_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::fore_color_changed

Occurs when the value of the xtd::forms::control::fore_color property changes.

Remarks
This event is raised if the xtd::forms::control::fore_color property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ font_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::font_changed

Occurs when the value of the xtd::forms::control::font property changes.

Remarks
This event is raised if the xtd::forms::control::font property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ help_requested

xtd::event<control, xtd::forms::help_event_handler> xtd::forms::control::help_requested

Occurs when the user requests help for a xtd::forms::control.

Remarks
The xtd::forms::control::help_requested event is commonly raised when the user presses the F1 key or an associated context-sensitive help button is clicked.
For more information about handling events, see Handling and Raising Events.

◆ key_down

xtd::event<control, xtd::forms::key_event_handler> xtd::forms::control::key_down

Occurs when a key is pressed while the xtd::forms::control has focus.

Remarks
Key events occur in the following order:
  1. xtd::forms::control::key_down event
  1. xtd::forms::control::key_press event
  1. xtd::forms::control::key_up event
To handle keyboard events only at the form level and not enable other controls to receive keyboard events, set the xtd::forms::key_press_event_args::handled property in your form's xtd::forms::control::key_press event-handling method to true. Certain keys, such as the TAB, RETURN, ESC, and arrow keys are handled by controls automatically. To have these keys raise the xtd::forms::control::key_down event, you must override the is_input_key method in each control on your form. The code for the override of the is_input_key would need to determine if one of the special keys is pressed and return a value of true. Instead of overriding the is_input_key method, you can handle the preview_key_down event and set the is_input_key property to true.
Examples
The following code example demonstrates the use of control keyboard events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Key events example");
control1.dock(dock_style::fill);
control1.parent(*this);
control1.key_down += delegate_(object & sender, key_event_args & e) {
ctrace << string::format("key_down={{key_code={}, key_data=[{}], value=0x{:X4}, modifiers=[{}]}}", e.key_code(), e.key_data(), e.key_value(), e.modifiers()) << environment::new_line << std::flush;
};
control1.key_press += delegate_(object & sender, key_press_event_args & e) {
ctrace << string::format("key_press={{key_char={}}}", e.key_char() == 0 ? "[none]" : string::format("'{}'", e.key_char())) << environment::new_line << std::flush;
};
control1.key_up += delegate_(object & sender, key_event_args & e) {
ctrace << string::format("key_up={{key_code={}, key_data=[{}], value=0x{:X4}, modifiers=[{}]}}", e.key_code(), e.key_data(), e.key_value(), e.modifiers()) << environment::new_line << std::flush;
if (e.modifiers() == keys::none) ctrace << environment::new_line << std::flush;
};
}
private:
control control1;
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
static auto new_line() noexcept -> xtd::string
Gets the newline string defined for this environment.
Provides data for the xtd::forms::control::key_down or xtd::forms::control::key_up event.
Definition key_event_args.hpp:25
Provides data for the xtd::forms::control::key_press event.
Definition key_press_event_args.hpp:26
static auto format(const basic_string< char > &fmt, args_t &&... args) -> basic_string
@ fill
All the control's edges are docked to the all edges of its containing control and sized appropriately...
Definition dock_style.hpp:35
Remarks
For more information about handling events, see Handling and Raising Events.

◆ key_press

xtd::event<control, xtd::forms::key_press_event_handler> xtd::forms::control::key_press

Occurs when a character. space or backspace key is pressed while the xtd::forms::control has focus.

Remarks
Key events occur in the following order:
  1. xtd::forms::control::key_down event
  1. xtd::forms::control::key_press event
  1. xtd::forms::control::key_up event
The xtd::forms::control::key_press event is not raised by non-character keys other than space and backspace; however, the non-character keys do raise the xtd::forms::control::key_down and xtd::forms::control::key_up events.
Use the xtd::forms::key_press_event_args::key_char property to sample keystrokes at run time and to consume or modify a subset of common keystrokes.
To handle keyboard events only at the form level and not enable other controls to receive keyboard events, set the xtd::forms::key_press_event_args::handled property in your form's xtd::forms::control::key_press event-handling method to true.
Examples
The following code example demonstrates the use of control keyboard events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Key events example");
control1.dock(dock_style::fill);
control1.parent(*this);
control1.key_down += delegate_(object & sender, key_event_args & e) {
ctrace << string::format("key_down={{key_code={}, key_data=[{}], value=0x{:X4}, modifiers=[{}]}}", e.key_code(), e.key_data(), e.key_value(), e.modifiers()) << environment::new_line << std::flush;
};
control1.key_press += delegate_(object & sender, key_press_event_args & e) {
ctrace << string::format("key_press={{key_char={}}}", e.key_char() == 0 ? "[none]" : string::format("'{}'", e.key_char())) << environment::new_line << std::flush;
};
control1.key_up += delegate_(object & sender, key_event_args & e) {
ctrace << string::format("key_up={{key_code={}, key_data=[{}], value=0x{:X4}, modifiers=[{}]}}", e.key_code(), e.key_data(), e.key_value(), e.modifiers()) << environment::new_line << std::flush;
if (e.modifiers() == keys::none) ctrace << environment::new_line << std::flush;
};
}
private:
control control1;
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ key_up

xtd::event<control, xtd::forms::key_event_handler> xtd::forms::control::key_up

Occurs when a key is released while the xtd::forms::control has focus.

Remarks
Key events occur in the following order:
  1. xtd::forms::control::key_down event
  1. xtd::forms::control::key_press event
  1. xtd::forms::control::key_up event
To handle keyboard events only at the form level and not enable other controls to receive keyboard events, set the xtd::forms::key_press_event_args::handled property in your form's xtd::forms::control::key_press event-handling method to true. Certain keys, such as the TAB, RETURN, ESC, and arrow keys are handled by controls automatically. To have these keys raise the xtd::forms::control::key_down event, you must override the is_input_key method in each control on your form. The code for the override of the is_input_key would need to determine if one of the special keys is pressed and return a value of true. Instead of overriding the is_input_key method, you can handle the preview_key_down event and set the is_input_key property to true.
Examples
The following code example demonstrates the use of control keyboard events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Key events example");
control1.dock(dock_style::fill);
control1.parent(*this);
control1.key_down += delegate_(object & sender, key_event_args & e) {
ctrace << string::format("key_down={{key_code={}, key_data=[{}], value=0x{:X4}, modifiers=[{}]}}", e.key_code(), e.key_data(), e.key_value(), e.modifiers()) << environment::new_line << std::flush;
};
control1.key_press += delegate_(object & sender, key_press_event_args & e) {
ctrace << string::format("key_press={{key_char={}}}", e.key_char() == 0 ? "[none]" : string::format("'{}'", e.key_char())) << environment::new_line << std::flush;
};
control1.key_up += delegate_(object & sender, key_event_args & e) {
ctrace << string::format("key_up={{key_code={}, key_data=[{}], value=0x{:X4}, modifiers=[{}]}}", e.key_code(), e.key_data(), e.key_value(), e.modifiers()) << environment::new_line << std::flush;
if (e.modifiers() == keys::none) ctrace << environment::new_line << std::flush;
};
}
private:
control control1;
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ layout

xtd::event<control, xtd::event_handler> xtd::forms::control::layout

Occurs when a xtd::forms::control should reposition its child controls.

Remarks
The xtd::forms::control::layout event occurs when child controls are added or removed, when the bounds of the control changes, and when other changes occur that can affect the layout of the control. The xtd::forms::control::layout event can be suppressed using the suspend_layout and resume_layout methods. Suspending layout enables you to perform multiple actions on a control without having to perform a layout for each change. For example, if you resize and move a control, each operation would raise a xtd::forms::control::layout event.
For more information about handling events, see Handling and Raising Events.

◆ location_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::location_changed

Occurs when the value of the xtd::forms::control::location property changes.

Remarks
This event is raised if the xtd::forms::control::location property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ lost_focus

xtd::event<control, xtd::event_handler> xtd::forms::control::lost_focus

Occurs when the xtd::forms::control loses focus.

Remarks
When you change the focus by using the keyboard (TAB, SHIFT+TAB, and so on), by calling the select or select_next_control methods, or by setting the container_control::active_control property to the current form, focus events occur in the following order:
  1. xtd::forms::control::enter event
  2. xtd::forms::control::got_focus event
  3. xtd::forms::control::leave event
  4. xtd::forms::control::validating event
  5. xtd::forms::control::validated event
  6. xtd::forms::control::lost_focus event
When you change the focus by using the mouse or by calling the focus method, focus events occur in the following order:
  1. xtd::forms::control::enter event
  2. xtd::forms::control::got_focus event
  3. xtd::forms::control::lost_focus event
  4. xtd::forms::control::leave event
  5. xtd::forms::control::validating event
  6. xtd::forms::control::validated event
If the causes_validation property is set to false, the xtd::forms::control::validating and xtd::forms::control::validated events are suppressed.
If the cancel property of the xtd::forms::cancel_event_args is set to true in the validating event delegate, all events that would usually occur after the validating event are suppressed.
Note The xtd::forms::control::got_focus and xtd::forms::control::lost_focus events are low-level focus events that are tied to the WM_KILLFOCUS and WM_SETFOCUS Windows messages. Typically, the xtd::forms::control::got_focus and xtd::forms::control::lost_focus events are only used when updating when writing custom controls. Instead the enter and leave events should be used for all controls except the xtd::forms::form class, which uses the activated and deactivate events.
Warning
Do not attempt to set focus from within the xtd::forms::control::enter, xtd::forms::control::got_focus, xtd::forms::control::leave, xtd::forms::control::lost_focus, xtd::forms::control::validating, or xtd::forms::control::validated event handlers. Doing so can cause your application or the operating system to stop responding.
Remarks
For more information about handling events, see Handling and Raising Events.

◆ mouse_click

xtd::event<control, xtd::forms::mouse_event_handler> xtd::forms::control::mouse_click

Occurs when the xtd::forms::control is clicked by the mouse.

Remarks
Depressing a mouse button when the cursor is over a control typically raises the following series of events from the control:
  1. xtd::forms::control::mouse_down event
  2. xtd::forms::control::click event
  3. xtd::forms::control::mouse_click event
  4. xtd::forms::control::mouse_up event
For this to occur, the various events cannot be disabled in the control's class.
Two single clicks that occur close enough in time, as determined by the mouse settings of the user's operating system, will generate a xtd::forms::control::mouse_double_click event instead of the second xtd::forms::control::mouse_click event.
important
click events are logically higher-level events of a control. They are often raised by other actions, such as pressing the ENTER key when the control has focus.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ mouse_double_click

xtd::event<control, xtd::forms::mouse_event_handler> xtd::forms::control::mouse_double_click

Occurs when the xtd::forms::control is double clicked by the mouse.

Remarks
The xtd::forms::control::mouse_double_click event occurs when the user depresses a mouse button twice in quick succession when the cursor is over the control. The time interval that separates two single clicks from a double-click is determined by the mouse settings of the user's operating system.
The following series of events is raised by the control when such a user action takes place:
  1. xtd::forms::control::mouse_down event
  2. xtd::forms::control::click event
  3. xtd::forms::control::mouse_click event
  4. xtd::forms::control::mouse_up event
  5. xtd::forms::control::mouse_down event
  6. xtd::forms::control::double_click event
  7. xtd::forms::control::mouse_click event
  8. xtd::forms::control::mouse_up event
For this to occur, the various events cannot be disabled in the control's class.
important
xtd::forms::control::double_click events are logically higher-level events of a control. They may be raised by other user actions, such as shortcut key combinations.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ mouse_down

xtd::event<control, xtd::forms::mouse_event_handler> xtd::forms::control::mouse_down

Occurs when the mouse pointer is over the xtd::forms::control and a mouse button is pressed.

Remarks
Mouse events occur in the following order:
  1. xtd::forms::control::mouse_enter
  2. xtd::forms::control::mouse_move
  3. xtd::forms::control::mouse_hover / xtd::forms::control::mouse_down / xtd::forms::control::mouse_wheel / xtd::forms::control::mouse_horizontal_wheel
  4. xtd::forms::control::mouse_up
  5. xtd::forms::control::mouse_leave
Note
The following events are not raised for the tab_control class unless there is at least one tab_page in the tab_control::tab_pages collection: xtd::forms::control::click, xtd::forms::control::double_click, xtd::forms::control::mouse_down, xtd::forms::control::mouse_up, xtd::forms::control::mouse_hover, xtd::forms::control::mouse_enter, xtd::forms::control::mouse_leave and xtd::forms::control::mouse_move. If there is at least one tab_page in the collection, and the user interacts with the tab control's header (where the tab_page names appear), the tab_control raises the appropriate event. However, if the user interaction is within the client area of the tab page, the tab_page raises the appropriate event.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ mouse_enter

xtd::event<control, xtd::event_handler> xtd::forms::control::mouse_enter

Occurs when the mouse pointer enters the xtd::forms::control.

Remarks
Mouse events occur in the following order:
  1. xtd::forms::control::mouse_enter
  2. xtd::forms::control::mouse_move
  3. xtd::forms::control::mouse_hover / xtd::forms::control::mouse_down / xtd::forms::control::mouse_wheel / xtd::forms::control::mouse_horizontal_wheel
  4. xtd::forms::control::mouse_up
  5. xtd::forms::control::mouse_leave
Note
The following events are not raised for the tab_control class unless there is at least one tab_page in the tab_control::tab_pages collection: xtd::forms::control::click, xtd::forms::control::double_click, xtd::forms::control::mouse_down, xtd::forms::control::mouse_up, xtd::forms::control::mouse_hover, xtd::forms::control::mouse_enter, xtd::forms::control::mouse_leave and xtd::forms::control::mouse_move. If there is at least one tab_page in the collection, and the user interacts with the tab control's header (where the tab_page names appear), the tab_control raises the appropriate event. However, if the user interaction is within the client area of the tab page, the tab_page raises the appropriate event.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ mouse_horizontal_wheel

xtd::event<control, xtd::forms::mouse_event_handler> xtd::forms::control::mouse_horizontal_wheel

Occurs when the mouse horizontal wheel moves while the xtd::forms::control has focus.

Remarks
When handling the xtd::forms::control::mouse_horizontal_wheel event it is important to follow the user interface (UI) standards associated with the mouse wheel. The mouse_event_args::delta property value indicates the amount the mouse wheel has been moved.
Mouse events occur in the following order:
  1. xtd::forms::control::mouse_enter
  2. xtd::forms::control::mouse_move
  3. xtd::forms::control::mouse_hover / xtd::forms::control::mouse_down / xtd::forms::control::mouse_wheel / xtd::forms::control::mouse_horizontal_wheel
  4. xtd::forms::control::mouse_up
  5. xtd::forms::control::mouse_leave
Note
The following events are not raised for the tab_control class unless there is at least one tab_page in the tab_control::tab_pages collection: xtd::forms::control::click, xtd::forms::control::double_click, xtd::forms::control::mouse_down, xtd::forms::control::mouse_up, xtd::forms::control::mouse_hover, xtd::forms::control::mouse_enter, xtd::forms::control::mouse_leave and xtd::forms::control::mouse_move. If there is at least one tab_page in the collection, and the user interacts with the tab control's header (where the tab_page names appear), the tab_control raises the appropriate event. However, if the user interaction is within the client area of the tab page, the tab_page raises the appropriate event.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ mouse_leave

xtd::event<control, xtd::event_handler> xtd::forms::control::mouse_leave

Occurs when the mouse pointer leaves the xtd::forms::control.

Remarks
Mouse events occur in the following order:
  1. xtd::forms::control::mouse_enter
  2. xtd::forms::control::mouse_move
  3. xtd::forms::control::mouse_hover / xtd::forms::control::mouse_down / xtd::forms::control::mouse_wheel / xtd::forms::control::mouse_horizontal_wheel
  4. xtd::forms::control::mouse_up
  5. xtd::forms::control::mouse_leave
Note
The following events are not raised for the tab_control class unless there is at least one tab_page in the tab_control::tab_pages collection: xtd::forms::control::click, xtd::forms::control::double_click, xtd::forms::control::mouse_down, xtd::forms::control::mouse_up, xtd::forms::control::mouse_hover, xtd::forms::control::mouse_enter, xtd::forms::control::mouse_leave and xtd::forms::control::mouse_move. If there is at least one tab_page in the collection, and the user interacts with the tab control's header (where the tab_page names appear), the tab_control raises the appropriate event. However, if the user interaction is within the client area of the tab page, the tab_page raises the appropriate event.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ mouse_move

xtd::event<control, xtd::forms::mouse_event_handler> xtd::forms::control::mouse_move

Occurs when the mouse pointer is moved over the xtd::forms::control.

Remarks
Mouse events occur in the following order:
  1. xtd::forms::control::mouse_enter
  2. xtd::forms::control::mouse_move
  3. xtd::forms::control::mouse_hover / xtd::forms::control::mouse_down / xtd::forms::control::mouse_wheel / xtd::forms::control::mouse_horizontal_wheel
  4. xtd::forms::control::mouse_up
  5. xtd::forms::control::mouse_leave
Note
The following events are not raised for the tab_control class unless there is at least one tab_page in the tab_control::tab_pages collection: xtd::forms::control::click, xtd::forms::control::double_click, xtd::forms::control::mouse_down, xtd::forms::control::mouse_up, xtd::forms::control::mouse_hover, xtd::forms::control::mouse_enter, xtd::forms::control::mouse_leave and xtd::forms::control::mouse_move. If there is at least one tab_page in the collection, and the user interacts with the tab control's header (where the tab_page names appear), the tab_control raises the appropriate event. However, if the user interaction is within the client area of the tab page, the tab_page raises the appropriate event.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ mouse_up

xtd::event<control, xtd::forms::mouse_event_handler> xtd::forms::control::mouse_up

Occurs when the mouse pointer is over the xtd::forms::control and a mouse button is released.

Remarks
Mouse events occur in the following order:
  1. xtd::forms::control::mouse_enter
  2. xtd::forms::control::mouse_move
  3. xtd::forms::control::mouse_hover / xtd::forms::control::mouse_down / xtd::forms::control::mouse_wheel / xtd::forms::control::mouse_horizontal_wheel
  4. xtd::forms::control::mouse_up
  5. xtd::forms::control::mouse_leave
Note
The following events are not raised for the tab_control class unless there is at least one tab_page in the tab_control::tab_pages collection: xtd::forms::control::click, xtd::forms::control::double_click, xtd::forms::control::mouse_down, xtd::forms::control::mouse_up, xtd::forms::control::mouse_hover, xtd::forms::control::mouse_enter, xtd::forms::control::mouse_leave and xtd::forms::control::mouse_move. If there is at least one tab_page in the collection, and the user interacts with the tab control's header (where the tab_page names appear), the tab_control raises the appropriate event. However, if the user interaction is within the client area of the tab page, the tab_page raises the appropriate event.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ mouse_wheel

xtd::event<control, xtd::forms::mouse_event_handler> xtd::forms::control::mouse_wheel

Occurs when the mouse wheel moves while the xtd::forms::control has focus.

Remarks
When handling the xtd::forms::control::mouse_wheel event it is important to follow the user interface (UI) standards associated with the mouse wheel. The mouse_event_args::delta property value indicates the amount the mouse wheel has been moved. The UI should scroll when the accumulated delta is plus or minus 120. The UI should scroll the number of logical lines returned by the system_information::mouse_wheel_scroll_lines property for every delta value reached. You can also scroll more smoothly in smaller that 120 unit increments, however the ratio should remain constant, that is system_information::mouse_wheel_scroll_lines lines scrolled per 120 delta units of wheel movement.
Mouse events occur in the following order:
  1. xtd::forms::control::mouse_enter
  2. xtd::forms::control::mouse_move
  3. xtd::forms::control::mouse_hover / xtd::forms::control::mouse_down / xtd::forms::control::mouse_wheel / xtd::forms::control::mouse_horizontal_wheel
  4. xtd::forms::control::mouse_up
  5. xtd::forms::control::mouse_leave
Note
The following events are not raised for the tab_control class unless there is at least one tab_page in the tab_control::tab_pages collection: xtd::forms::control::click, xtd::forms::control::double_click, xtd::forms::control::mouse_down, xtd::forms::control::mouse_up, xtd::forms::control::mouse_hover, xtd::forms::control::mouse_enter, xtd::forms::control::mouse_leave and xtd::forms::control::mouse_move. If there is at least one tab_page in the collection, and the user interacts with the tab control's header (where the tab_page names appear), the tab_control raises the appropriate event. However, if the user interaction is within the client area of the tab page, the tab_page raises the appropriate event.
Examples
The following code example demonstrates the use of control mouse events.
#define TRACE 1 // Force to trace even if example is builded with -DNTRACE.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
text("Mouse events example");
};
double_click += delegate_ {
};
mouse_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_double_click += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_double_click={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_down += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_down={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_enter += delegate_ {
};
mouse_horizontal_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_horizontal_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_leave += delegate_ {
};
mouse_move += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_move={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_up += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_up={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
mouse_wheel += delegate_(object & sender, const mouse_event_args & e) {
xtd::diagnostics::trace::write_line("mouse_wheel={{button={}, clicks={}, delta={}, location=[{}], modifier_keys=[{}]}}", e.button(), e.clicks(), e.delta(), e.location(), modifier_keys());
};
}
};
auto main() -> int {
trace_form trace_form;
application::run(form1 {});
}
Remarks
For more information about handling events, see Handling and Raising Events.

◆ move

xtd::event<control, xtd::event_handler> xtd::forms::control::move

Occurs when the control is moved.

Remarks
For more information about handling events, see Handling and Raising Events.

◆ paint

xtd::event<control, xtd::forms::paint_event_handler> xtd::forms::control::paint

Occurs when the xtd::forms::control is redrawn.

Remarks
The xtd::forms::control::paint event is raised when the control is redrawn. It passes an instance of paint_event_args to the method(s) that handles the xtd::forms::control::paint event. The xtd::forms::control::paint event is raised when the control is redrawn. It passes an instance of paint_event_args to the method(s) that handles the xtd::forms::control::paint event.
When creating a new custom control or an inherited control with a different visual appearance, you must provide code to render the control by overriding the on_paint method.
Examples
The following code example demonstrates the use of control paint events.
#include <xtd/xtd>
using namespace xtd::drawing::drawing_2d;
namespace form_paint_example {
class form1 : public form {
public:
form1() {
text("Paint example");
client_size({640, 480});
minimum_client_size({350, 320});
paint += delegate_(object & sender, paint_event_args & e) {
e.graphics().clear(color::cyan);
e.graphics().draw_string("Drawing with graphics", drawing::font("Arial", 34, font_style::regular), linear_gradient_brush(rectangle_f {20.0f, 20.0f, e.clip_rectangle().width - 180.0f, e.clip_rectangle().height - 40.0f}, color::navy, color::light_blue), {20.0f, 20.0f, e.clip_rectangle().width - 180.0f, e.clip_rectangle().height - 40.0f});
e.graphics().fill_ellipse(radial_gradient_brush(point {e.clip_rectangle().width - 100, 100}, color::white, color::yellow, 75), e.clip_rectangle().width - 150, 50, 100, 100);
e.graphics().draw_ellipse(pen(color::yellow_green, 2), e.clip_rectangle().width - 150, 50, 100, 100);
e.graphics().fill_rectangle(brushes::spring_green(), 0, e.clip_rectangle().height - 100, e.clip_rectangle().width, 100);
e.graphics().fill_rectangle(brushes::red(), e.clip_rectangle().width / 2 - 140, e.clip_rectangle().height - 180, 280, 150);
e.graphics().fill_rectangle(brushes::black(), e.clip_rectangle().width / 2 - 30, e.clip_rectangle().height - 140, 60, 110);
e.graphics().fill_rectangle(brushes::white(), e.clip_rectangle().width / 2 - 120, e.clip_rectangle().height - 140, 70, 60);
e.graphics().fill_rectangle(brushes::white(), e.clip_rectangle().width / 2 + 50, e.clip_rectangle().height - 140, 70, 60);
e.graphics().fill_polygon(linear_gradient_brush(rectangle {e.clip_rectangle().width / 2 - 160, e.clip_rectangle().height - 300, 320, 120}, color::brown, color::sandy_brown, linear_gradient_mode::backward_diagonal), array<point> {{e.clip_rectangle().width / 2, e.clip_rectangle().height - 300}, {e.clip_rectangle().width / 2 + 160, e.clip_rectangle().height - 180}, {e.clip_rectangle().width / 2 - 160, e.clip_rectangle().height - 180},});
};
}
};
}
auto main() -> int {
application::run(form_paint_example::form1 {});
}
static const xtd::drawing::color light_blue
Gets a system-defined color that has an ARGB value of 0xFFADD8E6. This field is constant.
Definition color.hpp:254
static const xtd::drawing::color navy
Gets a system-defined color that has an ARGB value of 0xFF000080. This field is constant.
Definition color.hpp:350
static const xtd::drawing::color cyan
Gets a system-defined color that has an ARGB value of 0xFF00FFFF. This field is constant.
Definition color.hpp:125
Encapsulates a xtd::drawing::brush with a linear gradient. This class cannot be inherited.
Definition linear_gradient_brush.hpp:30
Defines a particular format for text, including font face, size, and style attributes....
Definition font.hpp:45
@ regular
Normal text.
Definition font_style.hpp:19
xtd::drawing::drawing_2d::linear_gradient_brush linear_gradient_brush
Encapsulates a xtd::drawing::brush with a linear gradient. This class cannot be inherited.
The xtd::drawing::drawing_2d namespace provides advanced two-dimensional and vector graphics function...
Definition compositing_mode.hpp:12
Stores a set of four floating-point numbers that represent the location and size of a rectangle....
Definition rectangle_f.hpp:34
Remarks
For more information about handling events, see Handling and Raising Events.

◆ parent_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::parent_changed

Occurs when the value of the xtd::forms::control::parent property changes.

Remarks
This event is raised if the xtd::forms::control::parent property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ region_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::region_changed

Occurs when the value of the xtd::forms::control::region property changes.

Remarks
This event is raised if the xtd::forms::control::region property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ resize

xtd::event<control, xtd::event_handler> xtd::forms::control::resize

Occurs when the xtd::forms::control is resized.

Remarks
To determine the size of the resized control, you can cast the sender parameter of the registered control_event_handler method to a control and get its size property (or height and width properties individually).
To handle custom layouts, use the xtd::forms::control::layout event instead of the xtd::forms::control::resize event. The xtd::forms::control::layout event is raised in response to a xtd::forms::control::resize event, but also in response to other changes that affect the layout of the control.
Examples
The following code example demonstrates the use of control xtd::forms::control::resize event.
#include <xtd/xtd>
class form1 : public form {
public:
form1() {
dot_matrix_display1.height(250);
dot_matrix_display1.location({(client_size().width - dot_matrix_display1.width()) / 2, (client_size().height - dot_matrix_display1.height()) / 2});
dot_matrix_display1.parent(*this);
dot_matrix_display1.fore_color(color::red);
dot_matrix_display1.anchor(anchor_styles::top | anchor_styles::bottom);
timer1.interval(300_ms);
timer1.enabled(true);
timer1.tick += delegate_ {
dot_matrix_display1.dot_matrix_style(dot_matrix_styles[(counter / chase.count()) % dot_matrix_styles.count()]);
dot_matrix_display1.set_dots(chase[counter++ % chase.count()]);
};
back_color(color_converter::average(color::black, dot_matrix_display1.fore_color(), 0.20));
text("Dot matrix display example");
resize += delegate_ {
dot_matrix_display1.left((client_size().width - dot_matrix_display1.width()) / 2);
};
}
private:
int counter = 0;
list<dot_matrix_display::points_collection> chase = {
{},
{{3, 3}},
{{3, 3}, {2, 2}, {2, 3}, {2, 4}, {3, 2}, {3, 4}, {4, 2}, {4, 3}, {4, 4}},
{{3, 3}, {2, 2}, {2, 3}, {2, 4}, {3, 2}, {3, 4}, {4, 2}, {4, 3}, {4, 4}, {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {2, 1}, {2, 5}, {3, 1}, {3, 5}, {4, 1}, {4, 5}, {5, 1}, {5, 2}, {5, 3}, {5, 4}, {5, 5}},
{{3, 3}, {2, 2}, {2, 3}, {2, 4}, {3, 2}, {3, 4}, {4, 2}, {4, 3}, {4, 4}, {1, 1}, {1, 2}, {1, 3}, {1, 4}, {1, 5}, {2, 1}, {2, 5}, {3, 1}, {3, 5}, {4, 1}, {4, 5}, {5, 1}, {5, 2}, {5, 3}, {5, 4}, {5, 5}, {0, 0}, {0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}, {0, 6}, {1, 0}, {1, 6}, {2, 0}, {2, 6}, {3, 0}, {3, 6}, {4, 0}, {4, 6}, {5, 0}, {5, 6}, {6, 0}, {6, 1}, {6, 2}, {6, 3}, {6, 4}, {6, 5}, {6, 6}},
};
dot_matrix_display dot_matrix_display1;
list<dot_matrix_style> dot_matrix_styles = {
dot_matrix_style::standard,
dot_matrix_style::square
};
forms::timer timer1;
};
auto main() -> int {
application::run(form1 {});
}
virtual auto back_color() const noexcept -> xtd::drawing::color
Gets the background color for the control.
virtual auto height() const noexcept -> xtd::int32
Gets the height of the control.
@ chase
Defines a chase unit. Relative to width of the "0" (zero).
Definition length_unit.hpp:84
@ dot_matrix_display
Dot matrix display style.
Definition lcd_style.hpp:31
@ bottom
Bind control edges to the bottom of its container.
Definition anchor_styles.hpp:25
@ top
Bind control edges to the top of its container.
Definition anchor_styles.hpp:23
Remarks
For more information about handling events, see Handling and Raising Events.

◆ right_to_left_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::right_to_left_changed

Occurs when the value of the xtd::forms::control::right_to_left property changes.

Remarks
This event is raised if the xtd::forms::control::right_to_left property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ size_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::size_changed

Occurs when the value of the xtd::forms::control::size property changes.

Remarks
This event is raised if the xtd::forms::control::size property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ style_sheet_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::style_sheet_changed

Occurs when the value of the xtd::forms::control::style_sheet property changes or when xtd::application::style_sheet property changes.

Remarks
This event is raised if the xtd::forms::control::style_sheet property is changed or when xtd::application::style_sheet property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ system_colors_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::system_colors_changed

Occurs when the xtd::drwing::system_colors changes.

Remarks
This event is raised if the xtd::drawing::system_colors is changed. For example when automatic dark mode switching on macOS.
For more information about handling events, see Handling and Raising Events.

◆ tab_stop_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::tab_stop_changed

Occurs when the xtd::forms::control::tab_stop property value changes.

Remarks
This event is raised if the xtd::forms::control::tab_stop property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ text_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::text_changed

Occurs when the value of the xtd::forms::control::text property changes.

Remarks
This event is raised if the xtd::forms::control::text property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

◆ visible_changed

xtd::event<control, xtd::event_handler> xtd::forms::control::visible_changed

Occurs when the value of the xtd::forms::control::visible property changes.

Remarks
This event is raised if the xtd::forms::control::visible property is changed by either a programmatic modification or user interaction.
For more information about handling events, see Handling and Raising Events.

The documentation for this class was generated from the following file: