Control.Layout Event
Occurs when a control should reposition its child controls.
[Visual Basic] Public Event Layout As LayoutEventHandler [C#] public event LayoutEventHandler Layout; [C++] public: __event LayoutEventHandler* Layout;
[JScript] In JScript, you can handle the events defined by a class, but you cannot define your own.
Event Data
The event handler receives an argument of type LayoutEventArgs containing data related to this event. The following LayoutEventArgs properties provide information specific to this event.
| Property | Description |
|---|---|
| AffectedControl | Gets the child control affected by the change. |
| AffectedProperty | Gets the property affected by the change. |
Remarks
The Layout event occurs when child controls are added or removed, when the bounds of the control changes, and when other changes occur that can affect the layout of the control. The layout event can be suppressed using the SuspendLayout and ResumeLayout methods. Suspending layout allows for multiple actions to be performed on a control without having to perform a layout for each change. For example, if you resize and move a control, each operation would raise a Layout event.
For more information about handling events, see Consuming Events.
Example
[Visual Basic, C#, C++] The following example centers a Form on the screen in the Layout event. This will keep the form centered as the user resizes it. This example assumes you have created a Form control.
[Visual Basic] Private Sub MyForm_Layout(ByVal sender As Object, _ ByVal e As System.Windows.Forms.LayoutEventArgs) Handles MyBase.Layout ' Center the Form on the user's screen everytime it requires a Layout. Me.SetBounds((System.Windows.Forms.Screen.GetBounds(Me).Width / 2) - (Me.Width / 2), _ (System.Windows.Forms.Screen.GetBounds(Me).Height / 2) - (Me.Height / 2), _ Me.Width, Me.Height, System.Windows.Forms.BoundsSpecified.Location) End Sub [C#] private void MyForm_Layout(object sender, System.Windows.Forms.LayoutEventArgs e) { // Center the Form on the user's screen everytime it requires a Layout. this.SetBounds((Screen.GetBounds(this).Width/2) - (this.Width/2), (Screen.GetBounds(this).Height/2) - (this.Height/2), this.Width, this.Height, BoundsSpecified.Location); } [C++] private: void MyForm_Layout(Object* /*sender*/, System::Windows::Forms::LayoutEventArgs* /*e*/) { // Center the Form on the user's screen everytime it requires a Layout. this->SetBounds((Screen::GetBounds(this).Width/2) - (this->Width/2), (Screen::GetBounds(this).Height/2) - (this->Height/2), this->Width, this->Height, BoundsSpecified::Location); }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
See Also
Control Class | Control Members | System.Windows.Forms Namespace | OnLayout | InitLayout | SuspendLayout | ResumeLayout