System.Windows.Forms.ControlStyles Enumeration

Specifies the style and behavior of a control.

Syntax

[System.Flags]
public enum ControlStyles

Remarks

Controls use this enumeration in various properties and methods to specify functionality. A control can enable a style by calling the Control.SetStyle(ControlStyles, bool) method and passing in the appropriate System.Windows.Forms.ControlStyles bit (or bits) and the Boolean value to set the bit(s) to. For example, the following line of Visual Basic code would enable double-buffering.

Example

 myControl.SetStyle(UserPaint Or AllPaintingInWmPaint Or DoubleBuffer, True)

If the ControlStyles.AllPaintingInWmPaint bit is set to true, the window message WM_ERASEBKGND is ignored, and both Control.OnPaintBackground(PaintEventArgs) and Control.OnPaint(PaintEventArgs) methods are called directly from the window message WM_PAINT. This generally reduces flicker unless other controls send the window message WM_ERASEBKGND to the control. You might send the window message WM_ERASEBKGRND to achieve a pseudo-transparent effect similar to ControlStyles.SupportsTransparentBackColor; for example, a System.Windows.Forms.ToolBar with flat appearance does this.

To fully enable double-buffering, you can set the ControlStyles.OptimizedDoubleBuffer and ControlStyles.AllPaintingInWmPaint bits to true. However the preferred method for enabling double buffering, which yields the same result, is to set the Control.DoubleBuffered property for the control to true.

If the ControlStyles.SupportsTransparentBackColor bit is set to true, and the Control.BackColor is set to a color whose alpha component is less than 255, Control.OnPaintBackground(PaintEventArgs) will simulate transparency by asking its parent control to paint the background. This is not true transparency.

Note:

If there is another control between the control and its parent, the current control will not show the control in the middle.

When the ControlStyles.UserMouse bit is set to true, the following methods are still called: Control.OnMouseDown(MouseEventArgs), Control.OnMouseUp(MouseEventArgs), Control.OnMouseEnter(EventArgs), Control.OnMouseMove(MouseEventArgs), Control.OnMouseHover(EventArgs), Control.OnMouseLeave(EventArgs), and Control.OnMouseWheel(MouseEventArgs).

When the control is clicked, if the ControlStyles.StandardClick bit is set to true the Control.OnClick(EventArgs) method is called and it raises the Control.Click event. When the control is double-clicked, and both the ControlStyles.StandardClick and ControlStyles.StandardDoubleClick bits are set to true, the click is passed on to the Control.DoubleClick event. Then the Control.OnDoubleClick(EventArgs) method is called and it raises the Control.DoubleClick event. However, the control can call Control.OnClick(EventArgs) or Control.OnDoubleClick(EventArgs) directly regardless of the ControlStyles.StandardClick and ControlStyles.StandardDoubleClick bit values. For more information on control click and double click behaviors, see the Control.Click and Control.DoubleClick topics.

When the ControlStyles.UseTextForAccessibility bit is set and there is a value in the control's Text property, the value of that control's Text property determines the control's default Active Accessibility name and shortcut key. Otherwise, the text of the preceding System.Windows.Forms.Label control will be used instead. This style is set by default. Certain built-in control types, such as System.Windows.Forms.TextBox and System.Windows.Forms.ComboBox, reset this style so that the Text property of those controls will not be used by Active Accessibility.

Members

Member NameDescription
AllPaintingInWmPaint

If true, the control ignores the window message WM_ERASEBKGND to reduce flicker. This style should only be applied if the ControlStyles.UserPaint bit is set to true.

CacheText

If true, the control keeps a copy of the text rather than getting it from the Control.Handle each time it is needed. This style defaults to false. This behavior improves performance, but makes it difficult to keep the text synchronized.

ContainerControl

If true, the control is a container-like control.

DoubleBuffer

If true, drawing is performed in a buffer, and after it completes, the result is output to the screen. Double-buffering prevents flicker caused by the redrawing of the control. If you set ControlStyles.DoubleBuffer to true, you should also set ControlStyles.UserPaint and ControlStyles.AllPaintingInWmPaint to true.

EnableNotifyMessage

If true, the Control.OnNotifyMessage(Message) method is called for every message sent to the control's Control.WndProc(Message@). This style defaults to false. ControlStyles.EnableNotifyMessage does not work in partial trust.

FixedHeight

If true, the control has a fixed height when auto-scaled. For example, if a layout operation attempts to rescale the control to accommodate a new System.Drawing.Font, the control's Control.Height remains unchanged.

FixedWidth

If true, the control has a fixed width when auto-scaled. For example, if a layout operation attempts to rescale the control to accommodate a new System.Drawing.Font, the control's Control.Width remains unchanged.

Opaque

If true, the control is drawn opaque and the background is not painted.

OptimizedDoubleBuffer

If true, the control is first drawn to a buffer rather than directly to the screen, which can reduce flicker. If you set this property to true, you should also set the ControlStyles.AllPaintingInWmPaint to true.

ResizeRedraw

If true, the control is redrawn when it is resized.

Selectable

If true, the control can receive focus.

StandardClick

If true, the control implements the standard Control.Click behavior.

StandardDoubleClick

If true, the control implements the standard Control.DoubleClick behavior. This style is ignored if the ControlStyles.StandardClick bit is not set to true.

SupportsTransparentBackColor

If true, the control accepts a Control.BackColor with an alpha component of less than 255 to simulate transparency. Transparency will be simulated only if the ControlStyles.UserPaint bit is set to true and the parent control is derived from System.Windows.Forms.Control.

UserMouse

If true, the control does its own mouse processing, and mouse events are not handled by the operating system.

UserPaint

If true, the control paints itself rather than the operating system doing so. If false, the Control.Paint event is not raised. This style only applies to classes derived from System.Windows.Forms.Control.

UseTextForAccessibility

Specifies that the value of the control's Text property, if set, determines the control's default Active Accessibility name and shortcut key.

Requirements

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in System.Windows.Forms.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0