ControlStyles Enumeração

Definição

Especifica o estilo e o comportamento de um controlo.

Esta enumeração suporta uma combinação bit-a-bit dos respetivos valores membro.

public enum class ControlStyles
[System.Flags]
public enum ControlStyles
[<System.Flags>]
type ControlStyles = 
Public Enum ControlStyles
Herança
ControlStyles
Atributos

Campos

Name Valor Description
ContainerControl 1

Se true, o controlo é um controlo semelhante a um contentor.

UserPaint 2

Se true, o controlo pinta-se a si próprio em vez do sistema operativo a fazê-lo. Se false, o Paint evento não for elevado. Este estilo aplica-se apenas a classes derivadas de Control.

Opaque 4

Se true, o controlo é desenhado opaco e o fundo não é pintado.

ResizeRedraw 16

Se true, o controlo é redesenhado quando é redimensionado.

FixedWidth 32

Se true, o controlo tem uma largura fixa quando escalado automaticamente. Por exemplo, se uma operação de layout tentar redimensionar o controlo para acomodar um novo Font, o comando Width permanece inalterado.

FixedHeight 64

Se true, o controlo tem uma altura fixa quando escalado automaticamente. Por exemplo, se uma operação de layout tentar redimensionar o controlo para acomodar um novo Font, o comando Height permanece inalterado.

StandardClick 256

Se true, o controlo implementa o comportamento padrão Click .

Selectable 512

Se true, o controlo pode receber foco.

UserMouse 1024

Se true, o controlo faz o seu próprio processamento do rato, e os eventos do rato não são tratados pelo sistema operativo.

SupportsTransparentBackColor 2048

Se true, o controlo aceita a BackColor com um componente alfa inferior a 255 para simular transparência. A transparência só será simulada se o UserPaint bit estiver definido como true e o controlo pai for derivado de Control.

StandardDoubleClick 4096

Se true, o controlo implementa o comportamento padrão DoubleClick . Este estilo é ignorado se o StandardClick bit não estiver definido para true.

AllPaintingInWmPaint 8192

Se true, o controlo ignora a mensagem da janela WM_ERASEBKGND para reduzir a cintilação. Este estilo só deve ser aplicado se o UserPaint bit estiver definido para true.

CacheText 16384

Se true, o controlo mantém uma cópia do texto em vez de o Handle obter cada vez que é necessário. Este estilo corresponde por defeito a false. Este comportamento melhora o desempenho, mas dificulta manter o texto sincronizado.

EnableNotifyMessage 32768

Se true, o OnNotifyMessage(Message) método é chamado para cada mensagem enviada aos .WndProc(Message) Este estilo corresponde por defeito a false. EnableNotifyMessage não funciona em trust parcial.

DoubleBuffer 65536

Se true, o desenho for realizado num buffer e, após concluir, o resultado é enviado para o ecrã. O duplo buffering previne o piscar causado pelo redesenho do controlo. Se definires DoubleBuffer para true, também deves definir UserPaint e AllPaintingInWmPaint para true.

OptimizedDoubleBuffer 131072

Se true, o controlo é primeiro desenhado para um buffer em vez de diretamente para o ecrã, o que pode reduzir a cintilação. Se definir esta propriedade para true, também deve definir para AllPaintingInWmPainttrue.

UseTextForAccessibility 262144

Especifica que o valor da propriedade do Text controlo, se definido, determina o nome de Acessibilidade Ativa e a tecla de atalho padrão do controlo.

ApplyThemingImplicitly 524288

Para certos modos de cor relacionados com a interface de utilizador (Modo Escuro/Modo Claro), os controlos podem optar por aplicar automaticamente a temática apropriada. Especialmente os controlos que utilizam barras de scroll geridas pelo sistema podem beneficiar desta configuração. Note que usar estas definições fará com que alguns renderizadores de temas de controlo do Win32 fiquem inativos para um tema específico.

Exemplos

O exemplo seguinte demonstra a utilização de ControlStyles com o StyleChanged evento.

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

Observações

Os controlos utilizam esta enumeração em várias propriedades e métodos para especificar funcionalidades. Um controlo pode ativar um estilo chamando o SetStyle método e passando o bit (ou bits) apropriado ControlStyles e o valor booleano para definir o(s) bit(s). Por exemplo, a linha seguinte de código Visual Basic permitiria o double-buffering.

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

Se o bit AllPaintingInWmPaint estiver definido para true, a mensagem da janela WM_ERASEBKGND é ignorada, e ambos OnPaintBackground os métodos and OnPaint são chamados diretamente da janela de mensagens WM_PAINT. Isto geralmente reduz o cintilação, a menos que outros controlos enviem a mensagem da janela WM_ERASEBKGND ao controlo. Pode enviar a mensagem da janela WM_ERASEBKGRND para obter um efeito pseudo-transparente semelhante ao SupportsTransparentBackColor; Por exemplo, um ToolBar com aparência plana faz isto.

Para ativar totalmente o double-buffering, pode definir os bits OptimizedDoubleBuffer e AllPaintingInWmPaint para true. No entanto, o método preferido para permitir o duplo buffering, que produz o mesmo resultado, é definir a DoubleBuffered propriedade do controlo para true.

Se o bit SupportsTransparentBackColor estiver definido para true, e o BackColor for definido para uma cor cujo componente alfa seja inferior a 255, OnPaintBackground simulará transparência pedindo ao seu controlo pai para pintar o fundo. Isto não é verdadeira transparência.

Note

Se houver outro controlo entre o controlo e o seu pai, o controlo atual não mostrará o controlo no meio.

Quando o bit UserMouse é definido para true, os seguintes métodos continuam a ser chamados: Control.OnMouseDown, Control.OnMouseUp, Control.OnMouseEnterControl.OnMouseMove, Control.OnMouseHover, , Control.OnMouseLeave, e Control.OnMouseWheel.

Quando o controlo é clicado, se o bit StandardClick for definido para true o método é Control.OnClick chamado e ele eleva o Control.Click evento. Quando o controlo é clicado em duas vezes, e tanto os bits StandardClick como StandardDoubleClick são definidos para true, o clique é passado para o DoubleClick evento. Depois chama-se o Control.OnDoubleClick método e eleva o Control.DoubleClick evento. No entanto, o controlo pode chamar OnClick ou OnDoubleClick diretamente independentemente dos valores dos bits StandardClick e StandardDoubleClick. Para mais informações sobre comportamentos de controlo, clique e duplo clique, consulte os Control.Click tópicos e.Control.DoubleClick

Quando o bit UseTextParaAcessibilidade está definido e existe um valor na propriedade do Text controlo, o valor dessa Text propriedade determina o nome de Acessibilidade Ativa predefinido e a tecla de atalho do controlo. Caso contrário, será usado o texto do controlo anterior Label . Este estilo é definido por defeito. Certos tipos de controlos incorporados, como TextBox e ComboBox, reiniciam este estilo para que a Text propriedade desses controlos não seja usada pela Acessibilidade Ativa.

Aplica-se a

Ver também