日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

發布時間:2023/11/30 C# 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 控件双缓冲控制 ControlStyles 枚举详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ControlStyles 枚舉 .NET Framework 4 ?

指定控件的樣式和行為。

此枚舉有一個?FlagsAttribute?特性,通過該特性可使其成員值按位組合。

?

命名空間:??System.Windows.Forms
程序集:??System.Windows.Forms(在 System.Windows.Forms.dll 中) 語法 C#? [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。

C# // 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"); }

轉載于:https://www.cnblogs.com/1175429393wljblog/p/5684090.html

總結

以上是生活随笔為你收集整理的C# 控件双缓冲控制 ControlStyles 枚举详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。