LayoutEventArgs.AffectedControl 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
변경의 영향을 받는 자식 컨트롤을 가져옵니다.
public:
property System::Windows::Forms::Control ^ AffectedControl { System::Windows::Forms::Control ^ get(); };
public System.Windows.Forms.Control AffectedControl { get; }
member this.AffectedControl : System.Windows.Forms.Control
Public ReadOnly Property AffectedControl As Control
속성 값
변경의 영향을 받는 자식 Control입니다.
예제
다음 코드 예제에서는 인수 및 AffectedControl LayoutEventHandler 속성을 사용하여 AffectedProperty Windows 폼의 크기와 해당 컨트롤을 Windows 폼과 컨트롤 모두에 대한 다양한 속성 변경 내용으로 조정합니다.
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
설명
AffectedControl 메서드를 호출할 null
때 값이 제공되지 않은 경우 속성이 PerformLayout 설정됩니다.