指定控件的样式和行为。

此枚举有一个 FlagsAttribute 特性,通过该特性可使其成员值按位组合。属性:

ContainerControl:如果为true,则控件是类似容器的控件。

UserPaint:如果为true,控件将自行绘制,而不是通过操作系统来绘制。如果为false,将不会引发 System.Windows.Forms.Control.Paint事件。此样式仅适用于派生自 System.Windows.Forms.Control的类。

Opaque:如果为true,则控件被绘制为不透明的,不绘制背景。

ResizeRedraw:如果为true,则在调整控件大小时重绘控件。

FixedWidth:如果为true,则自动缩放时,控件具有固定宽度。例如,如果布局操作尝试重新缩放控件以适应新的System.Drawing.Font,则控件的System.Windows.Forms.Control.Width 将保持不变。

FixedHeight: 如果为 true,则自动缩放时,控件具有固定高度。 例如,如果布局操作尝试重新缩放控件以适应新的 System.Drawing.Font,则控件的  System.Windows.Forms.Control.Height 将保持不变。

StandardClick:如果为true,则控件将实现标准 System.Windows.Forms .Control.Click 行为。

Selectable:如果为true,则控件可以接受焦点.

UserMouse:如果为true,则控件完成自己的鼠标处理,因而鼠标事件不由操作系统处理。

SupportsTransparentBackColor:如果为true,控件接受alpha 组件小于255的System.Windows.Forms.Control.BackColor 以模拟透明。仅在System.Windows.Forms.ControlStyles.UserPaint位置为true 并且父控件派生自 System.Windows.Forms.Control 时才模拟透明。

StandardDoubleClick:如果为true,则控件将实现标准 System.Windows.Forms.Control.DoubleClick行为。如果 System.Windows.Forms.ControlStyles.StandardClick 位未设置为true,则忽略此样式。

AllPaintingInWmPaint:如果为true,控件将忽略 WM_ERASEBKGND 窗口消息以减少闪烁。仅当System.Windows.Forms.ControlStyles.UserPaint 位 设置为true时,才应当应用该样式。

CacheText:如果为true,控件保留文本的副本,而不是在每次需要时从 System.Windows.Forms.Control.Handle 获取文本副本。次样式默认为false。此行为提高了性能,但使保持文本同步变得困难。

EnableNotifyMessage: 如果为 true,则为发送到控件的 System.Windows.Forms.Control.WndProc(System.Windows.Forms.Message@)的每条消息调用 System.Windows.Forms.Control.OnNotifyMessage(System.Windows.Forms.Message)方法。 此样式默认为 false。 System.Windows.Forms.ControlStyles.EnableNotifyMessage在部分可信的情况下不工作。

DoubleBuffer:如果为 true,则绘制在缓冲区中进行,完成后将结果输出到屏幕上。 双重缓冲区可防止由控件重绘引起的闪烁。 如果将 System.Windows.Forms.ControlStyles.DoubleBuffer设置为 true,则还应当将 System.Windows.Forms.ControlStyles.UserPaint 和 System.Windows.Forms.ControlStyles.AllPaintingInWmPaint 设置为 true。

OptimizedDoubleBuffer:如果为 true,则该控件首先在缓冲区中绘制,而不是直接绘制到屏幕上,这样可以减少闪烁。 如果将此属性设置为 true,则还应当将 System.Windows.Forms.ControlStyles.AllPaintingInWmPaint设置为 true。

UseTextForAccessibility:指定该控件的 Text 属性的值,如果已设置,则可确定该控件的默认 Active Accessibility 名称和快捷键。

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

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

如果将 AllPaintingInWmPaint 位设置为 true,则将忽略 WM_ERASEBKGND 窗口消息,而直接从 WM_PAINT 窗口消息调用 OnPaintBackground 和 OnPaint 方法。 这通常可减少闪烁,除非其他控件将 WM_ERASEBKGND 窗口消息发送到该控件。 可以发送 WM_ERASEBKGRND 窗口消息以达到与SupportsTransparentBackColor 相似的假透明效果;例如,具有平面外观的 ToolBar 就采用这种方法。

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

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

 说明

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

当 UserMouse 位设置为 true 时,仍将调用以下方法:Control.OnMouseDownControl.OnMouseUpControl.OnMouseEnterControl.OnMouseMoveControl.OnMouseHoverControl.OnMouseLeave 和Control.OnMouseWheel

单击控件时,如果 StandardClick 位设置为 true,则 Control.OnClick 方法被调用,它将引发 Control.Click 事件。 双击控件并且 StandardClick 和StandardDoubleClick 位都设置为 true 时,会将此次单击传递给 DoubleClick 事件。 随后,Control.OnDoubleClick 方法被调用,此方法将引发Control.DoubleClick 事件。 然而,无论 StandardClick 和 StandardDoubleClick 位为何值,控件都可直接调用 OnClick 或 OnDoubleClick。 有关控件单击和双击行为的更多信息,请参见 Control.Click 和 Control.DoubleClick 这两个主题。

当已设置 UseTextForAccessibility 位和该控件的Text属性值时,该控件的Text属性值可确定控件的默认的 Active Accessibility 名称和快捷键。 否则,将改用前面的 Label 控件的文本。 此样式为默认设置。 某些内置控件类型(如 TextBox和 ComboBox)会重置此样式,因此 Active Accessibility 不会使用那些控件的Text属性。

对继承者的说明

如果该控件不支持 Click 或 DoubleClick 事件,那么从标准 Windows 窗体控件继承并将 StandardClick 或 StandardDoubleClick 位值更改为 true 会导致意外的行为,或者根本不会产生任何效果。

 

下面的示例演示如何通过 StyleChanged 事件使用 ControlStyles。

ControlStyles(枚举)的更多相关文章

  1. C# 控件双缓冲控制 ControlStyles 枚举详解

    ControlStyles 枚举 .NET Framework 4    指定控件的样式和行为. 此枚举有一个 FlagsAttribute 特性,通过该特性可使其成员值按位组合. 命名空间:  Sy ...

  2. 用mciSendString做音乐播放器

    音乐操作类 public class clsMCI { public clsMCI() { // // TODO: 在此处添加构造函数逻辑 // } //定义API函数使用的字符串变量 [Marsha ...

  3. Swift enum(枚举)使用范例

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...

  4. 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)

    建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...

  5. Objective-C枚举的几种定义方式与使用

    假设我们需要表示网络连接状态,可以用下列枚举表示: enum CSConnectionState { CSConnectionStateDisconnected, CSConnectionStateC ...

  6. Help Hanzo (素数筛+区间枚举)

    Help Hanzo 题意:求a~b间素数个数(1 ≤ a ≤ b < 231, b - a ≤ 100000).     (全题在文末) 题解: a~b枚举必定TLE,普通打表MLE,真是头疼 ...

  7. 枚举:enum

    枚举 所谓枚举就是指定好取值范围,所有内容只能从指定范围取得. 例如,想定义一个color类,他只能有RED,GREEN,BLUE三种植. 使用简单类完成颜色固定取值问题. 1,就是说,一个类只能完成 ...

  8. .NET 基础一步步一幕幕[方法、结构、枚举]

    方法.结构.枚举 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值,写void 方法名:P ...

  9. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件

    在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...

随机推荐

  1. bootstrap table使用小记

    bootstrap table是一个非常不错的,基于bootstrap的插件,它扩展和丰富了bootstrap表格的操作,如格式化表格,表格选择器,表格工具栏,分页等等. 最近基于bootstrap开 ...

  2. 关于html控件和服务器控件摁回车后提交按钮的问题

    今天做项目用到,项目是一个洗车系统,刷卡后在焦点出自动触发回车键事件,如,一个文本框,把焦点放入,刷一下卡,文本框自动获取卡号,同时触发回车事件,(就像银行办卡一样),发现刷卡后页面刷新后并没有执行按 ...

  3. Lambda表达式 - 浅谈

    概述: 只要有委托参数类型的地方,就可以使用 Lambda表达式.在讲述Lambda表达式之前,有必要先简要说明一下 委托中的"匿名方法": using System; using ...

  4. 如何启用第三方Chrome插件

    如何安装第三方Chrome插件,先下载扩展名为CRX的文件到本地,提醒一下,不能直接在该网站下打开安装,如果安装失败,可以找到此CRX文件拖入到扩展页安装就可以了! 可是,当我们通过本地安装了第三方C ...

  5. [转]Swift编程风格指南

    语言 使用美式英语拼写以匹配苹果公司的API 优选: var color = "red" 不建议使用: var colour = "red" 间隔 使用2个空格 ...

  6. 织梦 {dede:list}列表按多种排序显示

    orderby='sortrank' 文档排序方式 orderby='hot' 或 orderby='click' 表示按点击数排列 orderby='sortrank' 或 orderby='pub ...

  7. uva12489 Combating cancer(树同构)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud https://uva.onlinejudge.org/index.php?opt ...

  8. [算法]分治算法(Divide and Conquer)

    转载请注明:http://www.cnblogs.com/StartoverX/p/4575744.html 分治算法 在计算机科学中,分治法是建基于多项分支递归的一种很重要的算法范式.字面上的解释是 ...

  9. 关于lambda表达式树

    总而言之: 就是在表达式中没有花括号. IEnumerable<Rect> rectlist3 = rectlist.Select(rect =>newRect(rect.X + 2 ...

  10. C++异常处理小例

      学习程序的好方法是阅读代码和改进代码.下面的程例来自<An Overview of the C++ Programming Language>(5.1 异常和错误处理)程序用途:使用C ...