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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395562.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395562.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395562.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

協作機器人 ai算法_如果我們希望人工智能為我們服務而不是不利于我們,我們需要協作設計...

協作機器人 ai算法by Mariya Yao姚iya(Mariya Yao) 如果我們希望人工智能為我們服務而不是不利于我們,我們需要協作設計 (If we want AI to work for us — not against us — we need collaborative design) The trope “there’s an app for that” is becoming …

Shadow Brokers 公布 2.1 萬美元的 0day 訂閱服務

神秘黑客組織 Shadow Brokers 宣布將向支付 2.1 萬美元 0day 訂閱服務的個人公布最新一批的 NSA 工具,這一聲明給全世界的白帽子黑客或安全研究人員造成了一場倫理危機。 一方面,Shadow Brokers 此前釋出過創造出勒索軟件 WannaCry 的 NSA 工具&#xff…

linux awk 常見字符串處理

awk指定輸出列: awk {print $0} file #打印所有列awk {print $1} file #打印第一列 awk {print $1, $3} file #打印第一和第三列 cat file | awk {print $3, $1} #打印第三列和第一列,注意先后順序。 cat file | awk {print $3, $NF} #打印第三列…

oracle ldap 配置,ldap 安裝

一、安裝步驟1:配置yum源掛著盤鏡像時用到: 這里不做解釋;(yum clean all && yum makecache)2:安裝OpenLDAP組件1)安裝OpenLDAP組件命令如下:[rootgitea ~]# yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap -ycom…

scp跨主機拷貝工具

參考:http://www.cnblogs.com/hitwtx/archive/2011/11/16/2251254.html SSH上A機,要將10.1.17.95機/tpdata/shell_script/下面的crontab.tar.gz文件拷貝到A機的當前文件夾下面: scp weblogic10.1.17.95:/tpdata/shell_script/crontab.tar.gz …

Google Chrome瀏覽器可能在您不知情的情況下破壞了您的測試

by Robert Axelsen羅伯特阿克森(Robert Axelsen) Google Chrome瀏覽器可能在您不知情的情況下破壞了您的測試 (Google Chrome might have broken your tests without you even knowing about it) My colleague just discovered that Chrome 58 (released April 19th) has sile…

Java 9 將采用新的版本字符串格式

在現有的版本編碼格式使用了兩年之后,從Java 9開始,Java版本方案將根據業內軟件版本編碼的最佳實踐進行修改。使用或解析Java版本字符串的應用程序開發人員要注意了,因為這種變化可以會影響他們的應用程序。 正如JEP 223所闡述的那樣&#xf…

oracle 表更新表,Oracle 更新表(另一張表)

JUC學習筆記--Thread多線程基礎實現多線程的兩種方法 java 實現多線程通過兩種方式1.繼承Thread類 ,2.實現Runnable接口 class Newthead extends Thread{ public void ru ...SharePoint中新創建的Web Application在瀏覽器中報404錯誤問題描述:在安裝完成SharePoint 2010后,進入…

jQuery(愛前端)

一 jQuery 簡介 官網:www.jquery.com 口號:寫更少的代碼,做更多的事情 jQuery 是一個快速、小型的、特性很多的JS庫,它把很多事兒都變得簡單。jQuery是免費的、開源的。 jQuery 是 DOM 編程領域的霸主,極大的簡化了原生…

跳過 centos部署 webpy的各種坑

用centos部署webpy發現的各種坑: 1、python 版本: 2、中文編碼: 3、web模塊路徑: 在命令行里輸入python,能import web,但是網站錯誤報告一直報告沒有找到web模塊,說明web模塊路徑有問題。python…

撰寫本文的所有基本React.js概念

Update: This article is now part of my book “React.js Beyond The Basics”.更新:本文現在是我的書《超越基礎的React.js》的一部分。 Read the updated version of this content and more about React at jscomplete.com/react-beyond-basics.在jscomplete.com…

CentOS 7 firewalld使用簡介

2019獨角獸企業重金招聘Python工程師標準>>> Centos升級到7之后,發現無法使用iptables控制Linuxs的端口,google之后發現Centos 7使用firewalld代替了原來的iptables。下面記錄如何使用firewalld開放Linux端口: 1.快速使用說明 開啟…

簡述java語言的特點

簡述java語言的特點: ① 簡單的特性 ② 面向對象的特性 ③ 分布式處理的特性 ④ 健壯的特性 ⑤ 結構中立的特性 ⑥ 安全特性 ⑦ 可移植的特性 ⑧ 解釋的特性 ⑨ 高性能的特性 ⑩ 多線程的特性 轉載于:https://www.cnblogs.com/qq1335…

php函數嵌套 作用域,javascript 嵌套的函數(作用域鏈)_javascript技巧

嵌套的函數(作用域鏈)當你進行函數的嵌套時,要注意實際上作用域鏈是發生變化的,這點可能看起來不太直觀。你可把下面的代碼置入firebug監視值的變化。var testvar window屬性;var o1 {testvar:1, fun:function(){alert(o1: this.testvaro1.fun();1o2.f…

【C#-枚舉】枚舉的使用

枚舉是用戶定義的整數類型。 namespace ConsoleApplication1 {/// <summary>/// 在枚舉中使用一個整數值&#xff0c;來表示一天的階段/// 如&#xff1a;TimeOfDay.Morning返回數字0/// </summary>class EnumExample{public enum TimeOfDay{Morning 0,Afternoon …

Elixir 初嘗試 5 -- 遇見Actor

Actor模型的定義 wiki如是說 The actor model in computer science is a mathematical model of concurrent computation that treats "actors" as the universal primitives of concurrent computation. In response to a message that it receives, an actor can: …

創建外部快照_快照事件:現在如何僅通過拍照即可創建日歷事件

創建外部快照by Arjun Krishna Babu通過Arjun Krishna Babu 快照事件&#xff1a;現在如何僅通過拍照即可創建日歷事件 (Snap Event: How you can now create calendar events just by taking a picture) Google just published my first Android app, Snap Event, in their P…

一個備份sql server文件.bak還原成兩個數據庫

一直對這個概念很模糊&#xff0c;今天具體一點。 備份文件只要是正常的.bak文件就好。 數據庫>還原數據庫 直接填寫還原之后的文件名就行。 用一份備份文件還原兩個一樣的庫&#xff0c;只是名稱不一樣。 轉載于:https://www.cnblogs.com/Ly426/p/10209825.html

linux服務器防病毒,Linux系統中你不需要防病毒?_服務器評論-中關村在線

誤區4&#xff1a;Linux是無病毒。Linux的安全性這么好&#xff0c;這是否意味著Linux是無病毒嗎&#xff1f;現實&#xff1a;Linux是非常安全&#xff0c;并不是沒有針對Linux方面的病毒。有許多針對Linux的已知病毒。但是幾乎所有的已知病毒對于Linux在本質上都是非破壞性的…

外置接口請求

1. 請求接口 /*** 請求接口** param url* param paramsStr* param type Connection.Method.POST* param heads* return*/ public JSONObject sendUpload(String url, String paramsStr, Connection.Method type, Map<String, String> heads) {//發送上傳訂單請求Str…