共用方式為


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,則控制項是自己繪製,而非作業系統繪製。 若 falsePaint 則事件未被提出。 此樣式僅適用於由 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,則對每封發送給控制項的WndProc(Message)訊息 都會呼叫該OnNotifyMessage(Message)方法。 此風格預設為 falseEnableNotifyMessage 部分信任中不適用。

DoubleBuffer 65536

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

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 會被忽略,且 OnPaintBackgroundOnPaint 方法皆直接從視窗訊息 WM_PAINT 呼叫。 這通常能減少閃爍,除非其他控制項將視窗訊息WM_ERASEBKGND傳送給控制裝置。 你可以發送視窗訊息WM_ERASEBKGRND,以達成類似 SupportsTransparentBackColor 的偽透明效果;例如,平面外觀的 A ToolBar 就是這樣。

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

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

備註

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

當 UserMouse 位元設為 true時,以下方法仍會被呼叫:Control.OnMouseDownControl.OnMouseHoverControl.OnMouseUpControl.OnMouseWheelControl.OnMouseEnterControl.OnMouseMoveControl.OnMouseLeave

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

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

適用於

另請參閱