ControlStyles 列舉

定義

指定控制項的樣式和行為。

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

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

欄位

AllPaintingInWmPaint 8192

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

CacheText 16384

如果為 true,控制項會保留文字的複本,而不是在每次需要時從 Handle 取得。 此樣式預設為 false。 此行為可以改進效能,但會難以維持文字同步。

ContainerControl 1

如果為 true,控制項為類容器控制項。

DoubleBuffer 65536

如果為 true,會在緩衝區中執行繪製,並在完成之後,將結果輸出到畫面。 雙重緩衝可防止控制項重繪造成的閃爍。 如果您將 DoubleBuffer 設為 true,您也應該將 UserPaintAllPaintingInWmPaint 設為 true

EnableNotifyMessage 32768

如果為 true,每個傳送至控制項之 WndProc(Message) 的訊息會呼叫 OnNotifyMessage(Message) 方法。 此樣式預設為 falseEnableNotifyMessage 無法在部分信任的情況執行。

FixedHeight 64

如果為 true,當自動調整時控制項為固定高度。 例如,如果配置作業嘗試要調整控制項以容納新的 Font,則控制項的 Height 會維持不變。

FixedWidth 32

如果為 true,當自動調整時控制項為固定寬度。 例如,如果配置作業嘗試要調整控制項以容納新的 Font,則控制項的 Width 會維持不變。

Opaque 4

如果為 true,控制項會繪製為不透明且不會繪製背景。

OptimizedDoubleBuffer 131072

如果為 true,控制項會先繪製到緩衝區,而非直接繪製到螢幕,這可減少閃爍。 如果您將此屬性設為 true,您也應該將 AllPaintingInWmPaint 設為 true

ResizeRedraw 16

如果為 true,控制項調整大小時會重繪。

Selectable 512

如果為 true,控制項可以取得焦點。

StandardClick 256

如果為 true,控制項會實作標準的 Click 行為。

StandardDoubleClick 4096

如果為 true,控制項會實作標準的 DoubleClick 行為。 如果 StandardClick 位元並未設為 true,則會忽略此樣式。

SupportsTransparentBackColor 2048

如果為 true,控制項可接受 BackColor 與小於 255 的 Alpha 元件以模擬透明度。 僅有 UserPaint 位元設為 true 且父控制項衍生自 Control 時,才會模擬透明度。

UserMouse 1024

如果為 true,控制項會進行其本身的滑鼠處理,且作業系統不會處理滑鼠事件。

UserPaint 2

如果為 true,控制項會繪製本身,而不是由作業系統進行。 如果為 false,就不會引發 Paint 事件。 此樣式僅會套用至衍生自 Control 的類別。

UseTextForAccessibility 262144

指定控制項的 Text 屬性值,如果設定,會決定控制項的預設 Active Accessibility 名稱和快速鍵。

範例

下列範例示範 搭配 StyleChanged 事件的 用法 ControlStyles

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 的虛擬透明效果;例如, ToolBar 具有一般外觀的 會執行此動作。

若要完全啟用雙緩衝處理,您可以將 OptimizedDoubleBuffer 和 AllPaintingInWmPaint 位設定為 true 。 不過,啟用雙精度緩衝的慣用方法會產生相同的結果,就是將 控制項的 屬性設定 DoubleBufferedtrue

如果 SupportsTransparentBackColor 位設定為 true ,且 BackColor 設定為 Alpha 元件小於 255 的色彩, OnPaintBackground 則會要求其父控制項繪製背景來模擬透明度。 這不是真正的透明度。

注意

如果控制項與其父控制項之間有另一個控制項,目前的控制項將不會在中間顯示控制項。

當 UserMouse 位設定為 true 時,仍會呼叫下列方法: Control.OnMouseDownControl.OnMouseUpControl.OnMouseEnterControl.OnMouseMove 、、 Control.OnMouseHoverControl.OnMouseLeaveControl.OnMouseWheel

按一下控制項時,如果將 StandardClick 位設定為 true 方法, Control.OnClick 則會引發 Control.Click 事件。 按兩下控制項,並將 StandardClick 和 StandardDoubleClick 位都設定為 true 時,按一下會傳遞至 DoubleClick 事件。 接著會 Control.OnDoubleClick 呼叫 方法,並引發 Control.DoubleClick 事件。 不過,控制項可以呼叫或 OnDoubleClick 直接呼叫 OnClick ,而不論 StandardClick 和 StandardDoubleClick 位值為何。 如需有關控制項按一下和按兩下行為的詳細資訊,請參閱 Control.ClickControl.DoubleClick 主題。

當設定 UseTextForAccessibility 位且控制項 Text 的 屬性中有值時,該控制項的 屬性值會決定控制項 Text 的預設 Active Accessibility 名稱和快速鍵。 否則,將會改用上述 Label 控制項的文字。 預設會設定此樣式。 某些內建控制項類型,例如 TextBoxComboBox ,請重設此樣式, Text 讓 Active Accessibility 不會使用這些控制項的 屬性。

適用於

另請參閱