語言

ControlStyles 列舉

定義

指定控件的樣式和行為。

此列舉支援其成員值的位元組合。

public enum class ControlStyles
[System.Flags]
public enum ControlStyles
[<System.Flags>]
type ControlStyles = 
Public Enum ControlStyles
繼承
ControlStyles
屬性

欄位

名稱 值 Description
ContainerControl 1

若 true,則控制為類容器控制。

UserPaint 2

若 true,則控制項是自己繪製,而非作業系統繪製。 若 false, Paint 則事件未被提出。 此樣式僅適用於由 Control衍生的類別。

Opaque 4

若 true,則控制鍵繪製為不透明且背景未被繪製。

ResizeRedraw 16

若 true,則在調整大小時會重新繪製控制項。

FixedWidth 32

若 true,則自動縮放時控制寬度固定。 例如,若一個佈局操作嘗試重新縮放控制項以容納新的 Font,該控制 Width 項保持不變。

FixedHeight 64

若 true,則控制點在自動縮放時高度固定。 例如,若一個佈局操作嘗試重新縮放控制項以容納新的 Font,該控制 Height 項保持不變。

StandardClick 256

若 true,則控制項實作標準 Click 行為。

Selectable 512

若 true,控制點可獲得聚焦。

UserMouse 1024

若 true,控制項會自行執行滑鼠處理,滑鼠事件則不由作業系統處理。

SupportsTransparentBackColor 2048

若 true,控制項接受 α BackColor α 分量小於 255 以模擬透明度。 只有當位 UserPaint 元設為 true 且父控制源自 Control時,透明度才會被模擬。

StandardDoubleClick 4096

若 true,則控制項實作標準 DoubleClick 行為。 若 StandardClick 位元未設定為 true,此樣式將被忽略。

AllPaintingInWmPaint 8192

若 true,控制項會忽略視窗訊息 WM_ERASEBKGND以減少閃爍。 此樣式僅在位 UserPaint 元設定為 true時應用。

CacheText 16384

若 true,控制項會保留文本副本,而非每次 Handle 需要時都取得。 此風格預設為 false。 這種行為提升了效能,但也讓文字難以同步。

EnableNotifyMessage 32768

若 true,則對每封發送給控制項的OnNotifyMessage(Message)訊息 都會呼叫該WndProc(Message)方法。 此風格預設為 false。 EnableNotifyMessage 部分信任中不適用。

DoubleBuffer 65536

如果 true,繪圖會在緩衝區中進行,完成後,結果會輸出到螢幕上。 雙重緩衝可防止因重新繪製控制鍵而產生的閃爍。 如果你設DoubleBuffer為 true,你也應該將 和 UserPaint 設AllPaintingInWmPaint為 true。

OptimizedDoubleBuffer 131072

若 true,控制器會先被繪製到緩衝區,而非直接顯示螢幕,這樣可以減少閃爍。 如果你將此屬性設為 true,也應該將 AllPaintingInWmPaint 設為 true。

UseTextForAccessibility 262144

規定若設定 Text 控制項屬性的值,將決定控制項預設的主動無障礙名稱與快捷鍵。

ApplyThemingImplicitly 524288

對於某些與 UI 相關的色彩模式(暗黑模式/淺色模式),控制鍵可選擇自動套用相應主題。 尤其是使用系統管理滾動條的控制,能從此設定中受益。 請注意,使用此設定會導致某些 Win32 控制主題渲染器在特定主題下失效。

範例

以下範例展示了與 ControlStyles 事件的 StyleChanged 應用。

private:
   // Set the 'FixedHeight' and 'FixedWidth' styles to false.
   void MyForm_Load( Object^ /*sender*/, EventArgs^ /*e*/ )
   {
      this->SetStyle( ControlStyles::FixedHeight, false );
      this->SetStyle( ControlStyles::FixedWidth, false );
   }

   void RegisterEventHandler()
   {
      this->StyleChanged += gcnew EventHandler( this, &MyForm::MyForm_StyleChanged );
   }

   // Handle the 'StyleChanged' event for the 'Form'.
   void MyForm_StyleChanged( Object^ /*sender*/, EventArgs^ /*e*/ )
   {
      MessageBox::Show( "The style releated to the 'Form' has been changed" );
   }
// 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");
}
' Set the 'FixedHeight' and 'FixedWidth' styles to false.
Private Sub MyForm_Load(sender As Object, e As EventArgs)
   Me.SetStyle(ControlStyles.FixedHeight, False)
   Me.SetStyle(ControlStyles.FixedWidth, False)
End Sub

Private Sub RegisterEventHandler()
   AddHandler Me.StyleChanged, AddressOf MyForm_StyleChanged
End Sub

' Handle the 'StyleChanged' event for the 'Form'.
Private Sub MyForm_StyleChanged(sender As Object, e As EventArgs)
   MessageBox.Show("The style releated to the 'Form' has been changed")
End Sub

備註

控制項在各種屬性和方法中使用此枚舉來指定功能。 控制項可以透過呼叫 SetStyle 方法並傳入適當的 ControlStyles 位元(或多個位元)以及布林值來啟用樣式,以設定這些位元。 例如,以下 Visual Basic 程式碼行會啟用雙重緩衝。

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

若 AllPaintingInWmPaint 位元設為 true,視窗訊息 WM_ERASEBKGND 會被忽略,且 OnPaintBackground 和 OnPaint 方法皆直接從視窗訊息 WM_PAINT 呼叫。 這通常能減少閃爍,除非其他控制項將視窗訊息WM_ERASEBKGND傳送給控制裝置。 你可以發送視窗訊息WM_ERASEBKGRND,以達成類似 SupportsTransparentBackColor 的偽透明效果;例如,平面外觀的 A ToolBar 就是這樣。

要完全啟用雙重緩衝,你可以將 OptimizedDoubleBuffer 和 AllPaintingInWmPaint 位元設為 true。 然而,啟用雙重緩衝的首選方法是將控制項的性質設 DoubleBuffered 為 true。

如果 SupportsTransparentBackColor 位元設為 true,且 的 BackColor 顏色 alpha 分量小於 255, OnPaintBackground 則會透過請求父控制項繪製背景來模擬透明度。 這不是真正的透明度。

Note

如果控制項與父控制點之間有其他控制點,目前的控制點將不會顯示中間的控制點。

當 UserMouse 位元設為 true時,以下方法仍會被呼叫:Control.OnMouseDown、 Control.OnMouseUpControl.OnMouseEnterControl.OnMouseMoveControl.OnMouseHoverControl.OnMouseLeaveControl.OnMouseWheel。

當控制項被點擊時,如果 StandardClick 位元設為 ,true則會呼叫該Control.OnClick方法並引發事件。Control.Click 當控制項被雙擊,且 StandardClick 和 StandardDoubleClick 位元都設為 true時,點擊會傳遞給事件 DoubleClick 。 接著呼叫該 Control.OnDoubleClick 方法,事件就會 Control.DoubleClick 被觸發。 然而,控制項可以直接呼叫 OnClick 或 OnDoubleClick ,無論 StandardClick 和 StandardDoubleClick 的位元值如何。 欲了解更多關於控制點擊與雙擊行為的資訊,請參閱與Control.Click主題。Control.DoubleClick

當 UseTextForAccessibility 位元被設定且控制項 Text 屬性中有值時,該控制項屬性的值決定 Text 了控制項預設的主動無障礙名稱與快捷鍵。 否則,將改用前一個 Label 控制項的文本。 此樣式預設為設定。 某些內建控制類型,如 TextBox 和 ComboBox,會重置此樣式,使 Text 得這些控制項的特性不會被主動無障礙使用。

適用於

另請參閱