指定控件的樣式和行為。
此枚舉有一個 FlagsAttribute 特性,通過該特性可使其成員值按位組合。
命名空間: System.Windows.Forms
程序集: System.Windows.Forms(在 System.Windows.Forms.dll 中)
成員名稱 | 說明 |
---|---|
ContainerControl | 如果為 true,則控件是類似容器的控件。 |
UserPaint | 如果為 true,控件將自行繪制,而不是通過操作系統來繪制。 如果為 false,將不會引發 Paint 事件。 此樣式僅適用於派生自 Control 的類。 |
Opaque | 如果為 true,則控件被繪制為不透明的,不繪制背景。 |
ResizeRedraw | 如果為 true,則在調整控件大小時重繪控件。 |
FixedWidth | 如果為 true,則自動縮放時,控件具有固定寬度。 例如,如果布局操作嘗試重新縮放控件以適應新的Font,則控件的 Width 將保持不變。 |
FixedHeight | 如果為 true,則自動縮放時,控件具有固定高度。 例如,如果布局操作嘗試重新縮放控件以適應新的Font,則控件的 Height 將保持不變。 |
StandardClick | 如果為 true,則控件將實現標准 Click 行為。 |
Selectable | 如果為 true,則控件可以接收焦點。 |
UserMouse | 如果為 true,則控件完成自己的鼠標處理,因而鼠標事件不由操作系統處理。 |
SupportsTransparentBackColor | 如果為 true,控件接受 alpha 組件小於 255 的 BackColor 以模擬透明。 僅在 UserPaint 位設置為 true並且父控件派生自 Control 時才模擬透明。 |
StandardDoubleClick | 如果為 true,則控件將實現標准 DoubleClick 行為。 如果 StandardClick 位未設置為 true,則忽略此樣式。 |
AllPaintingInWmPaint | 如果為 true,控件將忽略 WM_ERASEBKGND 窗口消息以減少閃爍。 僅當 UserPaint 位設置為 true 時,才應當應用該樣式。 |
CacheText | 如果為 true,控件保留文本的副本,而不是在每次需要時從 Handle 獲取文本副本。 此樣式默認為false。 此行為提高了性能,但使保持文本同步變得困難。 |
EnableNotifyMessage | 如果為 true,則為發送到控件的 WndProc 的每條消息調用 OnNotifyMessage 方法。 此樣式默認為false。 EnableNotifyMessage 在部分可信的情況下不工作。 |
DoubleBuffer | 如果為 true,則繪制在緩沖區中進行,完成后將結果輸出到屏幕上。 雙重緩沖區可防止由控件重繪引起的閃爍。 如果將 DoubleBuffer 設置為 true,則還應當將 UserPaint 和 AllPaintingInWmPaint 設置為true。 |
OptimizedDoubleBuffer | 如果為 true,則該控件首先在緩沖區中繪制,而不是直接繪制到屏幕上,這樣可以減少閃爍。 如果將此屬性設置為 true,則還應當將 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.OnMouseDown、Control.OnMouseUp、Control.OnMouseEnter、Control.OnMouseMove、Control.OnMouseHover、Control.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。
// 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");
}