LayoutEventArgs Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece dados para o evento de Layout . Essa classe não pode ser herdada.
public ref class LayoutEventArgs sealed : EventArgs
public sealed class LayoutEventArgs : EventArgs
type LayoutEventArgs = class
inherit EventArgs
Public NotInheritable Class LayoutEventArgs
Inherits EventArgs
- Herança
Exemplos
O exemplo de código a seguir usa as AffectedProperty propriedades e AffectedControl como LayoutEventHandler argumentos para coordenar o tamanho de um formulário do Windows e seus controles com várias alterações de propriedade no formulário do Windows e nos controles.
public ref class Form1: public System::Windows::Forms::Form
{
private:
System::Windows::Forms::TextBox^ textBox1;
System::Windows::Forms::Label ^ label1;
System::Windows::Forms::Button^ layoutButton;
System::ComponentModel::Container^ components;
public:
Form1()
{
InitializeComponent();
}
protected:
~Form1()
{
if ( components != nullptr )
{
delete components;
}
}
private:
void InitializeComponent()
{
this->layoutButton = gcnew System::Windows::Forms::Button;
this->textBox1 = gcnew System::Windows::Forms::TextBox;
this->label1 = gcnew System::Windows::Forms::Label;
this->SuspendLayout();
//
// layoutButton
//
this->layoutButton->Anchor = System::Windows::Forms::AnchorStyles::Bottom;
this->layoutButton->Location = System::Drawing::Point( 72, 88 );
this->layoutButton->Name = "layoutButton";
this->layoutButton->Size = System::Drawing::Size( 150, 23 );
this->layoutButton->TabIndex = 0;
this->layoutButton->Text = "Hello";
//
// textBox1
//
this->textBox1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>(System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left | System::Windows::Forms::AnchorStyles::Right);
this->textBox1->Location = System::Drawing::Point( 24, 40 );
this->textBox1->Name = "textBox1";
this->textBox1->Size = System::Drawing::Size( 248, 20 );
this->textBox1->TabIndex = 1;
this->textBox1->Text = "Hello";
this->textBox1->TextChanged += gcnew System::EventHandler( this, &Form1::textBox1_TextChanged );
//
// label1
//
this->label1->Location = System::Drawing::Point( 24, 16 );
this->label1->Name = "label1";
this->label1->TabIndex = 2;
this->label1->Text = "Button's Text:";
//
// Form1
//
this->ClientSize = System::Drawing::Size( 292, 129 );
array<System::Windows::Forms::Control^>^temp0 = {this->label1,this->textBox1,this->layoutButton};
this->Controls->AddRange( temp0 );
this->Name = "Form1";
this->Text = "Layout Sample";
this->Layout += gcnew System::Windows::Forms::LayoutEventHandler( this, &Form1::Form1_Layout );
this->ResumeLayout( false );
}
// This method ensures that the form's width is the preferred size of 300 pixels
// or the size of the button plus 50 pixels, whichever amount is less.
void Form1_Layout( Object^ /*sender*/, System::Windows::Forms::LayoutEventArgs^ e )
{
// This event is raised once at startup with the AffectedControl
// and AffectedProperty properties on the LayoutEventArgs as null.
// The event provides size preferences for that case.
if ( (e->AffectedControl != nullptr) && (e->AffectedProperty != nullptr) )
{
// Ensure that the affected property is the Bounds property
// of the form.
if ( e->AffectedProperty->ToString()->Equals( "Bounds" ) )
{
// If layoutButton's width plus a padding of 50 pixels is greater than the preferred
// size of 300 pixels, increase the form's width.
if ( (this->layoutButton->Width + 50) > 300 )
{
this->Width = this->layoutButton->Width + 50;
}
// If not, keep the form's width at 300 pixels.
else
{
this->Width = 300;
}
// Center layoutButton on the form.
this->layoutButton->Left = (this->ClientSize.Width - this->layoutButton->Width) / 2;
}
}
}
// This method sets the Text property of layoutButton to the Text property
// of textBox1. If the new text plus a padding of 20 pixels is larger than
// the preferred size of 150 pixels, increase layoutButton's Width property.
void textBox1_TextChanged( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Set the Text property of layoutButton.
this->layoutButton->Text = this->textBox1->Text;
// Get the width of the text using the proper font.
int textWidth = (int)this->CreateGraphics()->MeasureString( layoutButton->Text, layoutButton->Font ).Width;
// If the width of the text plus a padding of 20 pixels is greater than the preferred size of
// 150 pixels, increase layoutButton's width.
if ( (textWidth + 20) > 150 )
{
// Setting the size property on any control raises
// the Layout event for its container.
this->layoutButton->Width = textWidth + 20;
}
// If not, keep layoutButton's width at 150 pixels.
else
{
this->layoutButton->Width = 150;
}
}
};
[STAThread]
int main()
{
Application::Run( gcnew Form1 );
}
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button layoutButton;
private System.ComponentModel.Container components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void InitializeComponent()
{
this.layoutButton = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// layoutButton
//
this.layoutButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.layoutButton.Location = new System.Drawing.Point(72, 88);
this.layoutButton.Name = "layoutButton";
this.layoutButton.Size = new System.Drawing.Size(150, 23);
this.layoutButton.TabIndex = 0;
this.layoutButton.Text = "Hello";
//
// textBox1
//
this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.textBox1.Location = new System.Drawing.Point(24, 40);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(248, 20);
this.textBox1.TabIndex = 1;
this.textBox1.Text = "Hello";
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
//
// label1
//
this.label1.Location = new System.Drawing.Point(24, 16);
this.label1.Name = "label1";
this.label1.TabIndex = 2;
this.label1.Text = "Button\'s Text:";
//
// Form1
//
this.ClientSize = new System.Drawing.Size(292, 129);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.label1,
this.textBox1,
this.layoutButton});
this.Name = "Form1";
this.Text = "Layout Sample";
this.Layout += new System.Windows.Forms.LayoutEventHandler(this.Form1_Layout);
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
// This method ensures that the form's width is the preferred size of 300 pixels
// or the size of the button plus 50 pixels, whichever amount is less.
private void Form1_Layout(object sender, System.Windows.Forms.LayoutEventArgs e)
{
// This event is raised once at startup with the AffectedControl
// and AffectedProperty properties on the LayoutEventArgs as null.
// The event provides size preferences for that case.
if ((e.AffectedControl != null) && (e.AffectedProperty != null))
{
// Ensure that the affected property is the Bounds property
// of the form.
if (e.AffectedProperty.ToString() == "Bounds")
{
// If layoutButton's width plus a padding of 50 pixels is greater than the preferred
// size of 300 pixels, increase the form's width.
if ((this.layoutButton.Width + 50) > 300)
{
this.Width = this.layoutButton.Width + 50;
}
// If not, keep the form's width at 300 pixels.
else
{
this.Width = 300;
}
// Center layoutButton on the form.
this.layoutButton.Left = (this.ClientSize.Width - this.layoutButton.Width) / 2;
}
}
}
// This method sets the Text property of layoutButton to the Text property
// of textBox1. If the new text plus a padding of 20 pixels is larger than
// the preferred size of 150 pixels, increase layoutButton's Width property.
private void textBox1_TextChanged(object sender, System.EventArgs e)
{
// Set the Text property of layoutButton.
this.layoutButton.Text = this.textBox1.Text;
// Get the width of the text using the proper font.
int textWidth = (int)this.CreateGraphics().MeasureString(layoutButton.Text, layoutButton.Font).Width;
// If the width of the text plus a padding of 20 pixels is greater than the preferred size of
// 150 pixels, increase layoutButton's width.
if ((textWidth + 20) > 150)
{
// Setting the size property on any control raises
// the Layout event for its container.
this.layoutButton.Width = textWidth + 20;
}
// If not, keep layoutButton's width at 150 pixels.
else
{
this.layoutButton.Width = 150;
}
}
}
Public Class Form1
Inherits System.Windows.Forms.Form
Private WithEvents textBox1 As System.Windows.Forms.TextBox
Private label1 As System.Windows.Forms.Label
Private layoutButton As System.Windows.Forms.Button
Private components As System.ComponentModel.Container = Nothing
Public Sub New()
InitializeComponent()
End Sub
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If (components IsNot Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Private Sub InitializeComponent()
Me.layoutButton = New System.Windows.Forms.Button()
Me.textBox1 = New System.Windows.Forms.TextBox()
Me.label1 = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
' layoutButton
'
Me.layoutButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom
Me.layoutButton.Location = New System.Drawing.Point(72, 88)
Me.layoutButton.Name = "layoutButton"
Me.layoutButton.Size = New System.Drawing.Size(150, 23)
Me.layoutButton.TabIndex = 0
Me.layoutButton.Text = "Hello"
'
' textBox1
'
Me.textBox1.Anchor = System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right
Me.textBox1.Location = New System.Drawing.Point(24, 40)
Me.textBox1.Name = "textBox1"
Me.textBox1.Size = New System.Drawing.Size(248, 20)
Me.textBox1.TabIndex = 1
Me.textBox1.Text = "Hello"
'
' label1
'
Me.label1.Location = New System.Drawing.Point(24, 16)
Me.label1.Name = "label1"
Me.label1.TabIndex = 2
Me.label1.Text = "Button's Text:"
'
' Form1
'
Me.ClientSize = New System.Drawing.Size(292, 129)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.label1, Me.textBox1, Me.layoutButton})
Me.Name = "Form1"
Me.Text = "Layout Sample"
Me.ResumeLayout(False)
End Sub
' This method ensures that the form's width is the preferred size of 300 pixels
' or the size of the button plus 50 pixels, whichever amount is less.
Private Sub Form1_Layout(ByVal sender As Object, ByVal e As System.Windows.Forms.LayoutEventArgs) Handles MyBase.Layout
' This event is raised once at startup with the AffectedControl
' and AffectedProperty properties on the LayoutEventArgs as null.
' The event provides size preferences for that case.
If (e.AffectedControl IsNot Nothing) And (e.AffectedProperty IsNot Nothing) Then
' Ensure that the affected property is the Bounds property
' of the form.
If e.AffectedProperty.ToString() = "Bounds" Then
' If layoutButton's width plus a padding of 50 pixels is greater than the preferred
' size of 300 pixels, increase the form's width.
If Me.layoutButton.Width + 50 > 300 Then
Me.Width = Me.layoutButton.Width + 50
' If not, keep the form's width at 300 pixels.
Else
Me.Width = 300
End If
' Center layoutButton on the form.
Me.layoutButton.Left = (Me.ClientSize.Width - Me.layoutButton.Width) / 2
End If
End If
End Sub
' This method sets the Text property of layoutButton to the Text property
' of textBox1. If the new text plus a padding of 20 pixels is larger than
' the preferred size of 150 pixels, increase layoutButton's Width property.
Private Sub textBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles textBox1.TextChanged
' Set the Text property of layoutButton.
Me.layoutButton.Text = Me.textBox1.Text
' Get the width of the text using the proper font.
Dim textWidth As Integer = CInt(Me.CreateGraphics().MeasureString(layoutButton.Text, layoutButton.Font).Width)
' If the width of the text plus a padding of 20 pixels is greater than the preferred size of
' 150 pixels, increase layoutButton's width.
If textWidth + 20 > 150 Then
' Setting the size property on any control raises
' the Layout event for its container.
Me.layoutButton.Width = textWidth + 20
' If not, keep layoutButton's width at 150 pixels.
Else
Me.layoutButton.Width = 150
End If
End Sub
End Class
Comentários
Alterações em um controle como redimensionamento, exibição ou ocultação de controles filho e adição ou remoção de controles filho tornam necessário que um controle layout seus controles filho. Um LayoutEventArgs especifica o controle filho que foi alterado e sua propriedade afetada. Por exemplo, se um controle tiver sido tornado visível desde a última operação de layout, a Visible propriedade será afetada.
As AffectedControl propriedades e AffectedProperty são definidas null
como se nenhum valor foi fornecido quando o PerformLayout método foi chamado.
Para obter mais informações sobre como lidar com eventos, consulte Manipulando e gerando eventos.
Construtores
LayoutEventArgs(Control, String) |
Inicializa uma nova instância da classe LayoutEventArgs com o controle e a propriedade afetados especificados. |
LayoutEventArgs(IComponent, String) |
Inicializa uma nova instância da classe LayoutEventArgs com o componente e a propriedade afetados especificados. |
Propriedades
AffectedComponent |
Obtém o Component afetado pela alteração de layout. |
AffectedControl |
Obtém o controle filho afetado pela alteração. |
AffectedProperty |
Obtém a propriedade afetada pela alteração. |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |