LayoutEventArgs Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt Daten für das Layout-Ereignis bereit. Diese Klasse kann nicht vererbt werden.
public ref class LayoutEventArgs sealed : EventArgs
public sealed class LayoutEventArgs : EventArgs
type LayoutEventArgs = class
inherit EventArgs
Public NotInheritable Class LayoutEventArgs
Inherits EventArgs
- Vererbung
Beispiele
Im folgenden Codebeispiel werden die AffectedProperty Eigenschaften und AffectedControl als LayoutEventHandler Argumente verwendet, um die Größe eines Windows-Formulars und seiner Steuerelemente mit verschiedenen Eigenschaftsänderungen sowohl am Windows-Formular als auch an den Steuerelementen zu koordinieren.
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
Hinweise
Änderungen an einem Steuerelement, z. B. Ändern der Größe, Anzeigen oder Ausblenden untergeordneter Steuerelemente und Hinzufügen oder Entfernen untergeordneter Steuerelemente machen es erforderlich, dass ein Steuerelement seine untergeordneten Steuerelemente layoutt. Ein LayoutEventArgs gibt das untergeordnete Steuerelement an, das geändert wurde, und dessen betroffene Eigenschaft. Wenn beispielsweise ein Steuerelement seit dem letzten Layoutvorgang sichtbar gemacht wurde, ist die Visible -Eigenschaft betroffen.
Die AffectedControl Eigenschaften und AffectedProperty werden auf null
festgelegt, wenn beim Aufrufen der PerformLayout Methode keine Werte angegeben wurden.
Weitere Informationen zur Behandlung von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.
Konstruktoren
LayoutEventArgs(Control, String) |
Initialisiert eine neue Instanz der LayoutEventArgs-Klasse mit dem angegebenen Steuerelement und der betroffenen Eigenschaft. |
LayoutEventArgs(IComponent, String) |
Initialisiert eine neue Instanz der LayoutEventArgs-Klasse mit der angegebenen Komponente und der betroffenen Eigenschaft. |
Eigenschaften
AffectedComponent |
Ruft die von der Layoutänderung betroffene Component ab. |
AffectedControl |
Ruft das von der Änderung betroffene untergeordnete Steuerelement ab. |
AffectedProperty |
Ruft die von der Änderung betroffene Eigenschaft ab. |
Methoden
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |