指定控件的樣式和行為。
此枚舉有一個?FlagsAttribute?特性,通過該特性可使其成員值按位組合。
?
命名空間:??System.Windows.Forms程序集:??System.Windows.Forms(在 System.Windows.Forms.dll 中)
[FlagsAttribute] public enum ControlStyles
成員名稱 | 說明 |
---|---|
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");
}