通过


ControlStyles 枚举

定义

指定控件的样式和行为。

此枚举支持其成员值的按位组合。

public enum class ControlStyles
[System.Flags]
public enum ControlStyles
[<System.Flags>]
type ControlStyles = 
Public Enum ControlStyles
继承
ControlStyles
属性

字段

名称 说明
ContainerControl 1

如果 true,控件是类似于容器的控件。

UserPaint 2

如果 true,控件会自行绘制,而不是操作系统。 如果 falsePaint 则不引发该事件。 此样式仅适用于派生自 Control的类。

Opaque 4

如果 true,则绘制控件不透明且不绘制背景。

ResizeRedraw 16

如果 true为控件调整大小,则重新绘制控件。

FixedWidth 32

如果 true,控件在自动缩放时具有固定宽度。 例如,如果布局操作尝试重新缩放控件以适应新 Font控件,则控件 Width 保持不变。

FixedHeight 64

如果 true,控件在自动缩放时具有固定的高度。 例如,如果布局操作尝试重新缩放控件以适应新 Font控件,则控件 Height 保持不变。

StandardClick 256

如果 true,控件将实现标准 Click 行为。

Selectable 512

如果 true,控件可以接收焦点。

UserMouse 1024

如果 true控件执行自己的鼠标处理,并且操作系统不会处理鼠标事件。

SupportsTransparentBackColor 2048

如果 true,控件接受 BackColor 的 alpha 分量小于 255 以模拟透明度。 仅当 UserPaint 位设置为 true 且父控件派生自 Control时,才会模拟透明度。

StandardDoubleClick 4096

如果 true,控件将实现标准 DoubleClick 行为。 如果未 StandardClick 将位设置为 true,则忽略此样式。

AllPaintingInWmPaint 8192

如果 true,控件将忽略窗口消息WM_ERASEBKGND以减少闪烁。 仅当位设置为true时,才应应用UserPaint此样式。

CacheText 16384

如果 true,控件会保留文本的副本,而不是每次需要时从 Handle 中获取它。 此样式默认为 false. 此行为可提高性能,但很难使文本保持同步。

EnableNotifyMessage 32768

如果 trueOnNotifyMessage(Message) 发送到控件 WndProc(Message)的每个消息调用该方法。 此样式默认为 false. EnableNotifyMessage 在部分信任中不起作用。

DoubleBuffer 65536

如果在 true缓冲区中执行绘图,并且完成后,结果将输出到屏幕。 双缓冲可防止控件重绘引起的闪烁。 如果设置为DoubleBuffertrue,则还应设置UserPaintAllPaintingInWmPaint设置为 true

OptimizedDoubleBuffer 131072

如果 true,控件首先绘制到缓冲区,而不是直接绘制到屏幕,这可以减少闪烁。 如果将此属性设置为true,则还应将此属性AllPaintingInWmPainttrue设置为 。

UseTextForAccessibility 262144

指定控件属性的值 Text (如果已设置)确定控件的默认活动辅助功能名称和快捷键。

ApplyThemingImplicitly 524288

对于某些与 UI 相关的颜色模式(深色模式/浅色模式),控件可以选择自动应用相应的主题。 特别是使用系统管理的滚动条的控件可以从此设置中受益。 请注意,使用此设置将导致某些 win32 控制主题呈现器在特定主题中变为非活动状态。

示例

以下示例演示了ControlStylesStyleChanged对事件的用法。

private:
   // Set the 'FixedHeight' and 'FixedWidth' styles to false.
   void MyForm_Load( Object^ /*sender*/, EventArgs^ /*e*/ )
   {
      this->SetStyle( ControlStyles::FixedHeight, false );
      this->SetStyle( ControlStyles::FixedWidth, false );
   }

   void RegisterEventHandler()
   {
      this->StyleChanged += gcnew EventHandler( this, &MyForm::MyForm_StyleChanged );
   }

   // Handle the 'StyleChanged' event for the 'Form'.
   void MyForm_StyleChanged( Object^ /*sender*/, EventArgs^ /*e*/ )
   {
      MessageBox::Show( "The style releated to the 'Form' has been changed" );
   }
// Set the 'FixedHeight' and 'FixedWidth' styles to false.
private void MyForm_Load(object sender, EventArgs e)
{
   this.SetStyle(ControlStyles.FixedHeight, false);
   this.SetStyle(ControlStyles.FixedWidth, false);
}

private void RegisterEventHandler()
{
   this.StyleChanged += new EventHandler(MyForm_StyleChanged);
}

// Handle the 'StyleChanged' event for the 'Form'.
private void MyForm_StyleChanged(object sender, EventArgs e)
{
   MessageBox.Show("The style releated to the 'Form' has been changed");
}
' Set the 'FixedHeight' and 'FixedWidth' styles to false.
Private Sub MyForm_Load(sender As Object, e As EventArgs)
   Me.SetStyle(ControlStyles.FixedHeight, False)
   Me.SetStyle(ControlStyles.FixedWidth, False)
End Sub

Private Sub RegisterEventHandler()
   AddHandler Me.StyleChanged, AddressOf MyForm_StyleChanged
End Sub

' Handle the 'StyleChanged' event for the 'Form'.
Private Sub MyForm_StyleChanged(sender As Object, e As EventArgs)
   MessageBox.Show("The style releated to the 'Form' has been changed")
End Sub

注解

控件在各种属性和方法中使用此枚举来指定功能。 控件可以通过调用 SetStyle 方法并传入适当的 ControlStyles 位(或位)和布尔值来设置位(s)来启用样式。 例如,以下 Visual Basic 代码行将启用双缓冲。

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

如果 AllPaintingInWmPaint 位设置为true,则忽略窗口消息WM_ERASEBKGND,并且直接从OnPaintBackgroundOnPaint窗口消息WM_PAINT调用方法。 这通常会减少闪烁,除非其他控件将窗口消息WM_ERASEBKGND发送到控件。 可以发送窗口消息WM_ERASEBKGRND实现类似于 SupportsTransparentBackColor 的伪透明效果;例如, ToolBar 具有平面外观的执行此操作。

若要完全启用双缓冲,可以将 OptimizedDoubleBuffer 和 AllPaintingInWmPaint 位设置为 true。 但是,启用生成相同结果的双缓冲的首选方法是将控件的属性设置为 DoubleBufferedtrue

如果 SupportsTransparentBackColor 位设置为 true,并且 BackColor 设置为 alpha 分量小于 255 的颜色, OnPaintBackground 则通过请求其父控件绘制背景来模拟透明度。 这不是真正的透明度。

注释

如果控件与其父控件之间存在另一个控件,则当前控件不会在中间显示该控件。

将 UserMouse 位设置为true时,仍调用以下方法:Control.OnMouseDown、、Control.OnMouseEnterControl.OnMouseUpControl.OnMouseMoveControl.OnMouseHover、和Control.OnMouseLeaveControl.OnMouseWheel

单击控件时,如果将 StandardClick 位设置为trueControl.OnClick该方法,则会引发Control.Click该事件。 双击控件时,StandardClick 和 StandardDoubleClick 位都设置为 true,单击将传递给 DoubleClick 事件。 Control.OnDoubleClick然后调用该方法并引发Control.DoubleClick事件。 但是,无论 StandardClick 和 StandardDoubleClick 位值如何,控件都可以调用或OnDoubleClick直接调用OnClick。 有关控件单击和双击行为的详细信息,请参阅 Control.ClickControl.DoubleClick 主题。

当设置 UseTextForAccessibility 位并且控件 Text 的属性中有一个值时,该控件 Text 的属性的值将确定控件的默认 Active Accessibility 名称和快捷键。 否则,将改用上述 Label 控件的文本。 默认设置此样式。 某些内置控件类型(如 TextBoxComboBox)重置此样式, Text 以便活动辅助功能不会使用这些控件的属性。

适用于

另请参阅