다음을 통해 공유


ShapeContainer 클래스

업데이트: 2007년 11월

LineShape, OvalShape, RectangleShape 컨트롤 및 Shape에서 파생되는 다른 컨트롤에 대한 컨테이너를 제공합니다.

네임스페이스:  Microsoft.VisualBasic.PowerPacks
어셈블리:  Microsoft.VisualBasic.PowerPacks.Vs(Microsoft.VisualBasic.PowerPacks.Vs.dll)

구문

<BrowsableAttribute(False)> _
Public NotInheritable Class ShapeContainer _
    Inherits UserControl

Dim instance As ShapeContainer
[BrowsableAttribute(false)]
public sealed class ShapeContainer : UserControl
[BrowsableAttribute(false)]
public ref class ShapeContainer sealed : public UserControl
public final class ShapeContainer extends UserControl

설명

LineShape, OvalShape 또는 RectangleShape 컨트롤은 선 및 도형 컨트롤에 대한 캔버스로 사용되는 ShapeContainer 개체에만 포함될 수 있습니다.

디자인 타임에 선 또는 도형을 폼 또는 컨테이너에 추가할 때 ShapeContainer가 없는 경우 자동으로 만들어집니다. 선 또는 도형의 Parent 속성은 해당 ShapeContainer로 설정됩니다. ShapeContainer의 Parent 속성은 선 또는 도형이 추가된 폼 또는 컨테이너 컨트롤로 설정됩니다.

New 메서드를 사용하여 런타임에 선 또는 도형을 만들 때 컨트롤의 Parent 속성을 ShapeContainer로 설정해야 합니다. 폼 또는 컨테이너의 ShapeContainer가 이미 있으면 Parent 속성을 해당 ShapeContainer로 설정해야 합니다. ShapeContainer가 없으면 New 메서드를 사용하여 ShapeContainer를 만들고 Parent 속성을 폼 또는 컨테이너로 설정할 수 있습니다.

참고:

각 폼 또는 컨테이너에 대해 두 개 이상의 ShapeContainer를 만들지 마십시오. 이 경우 예기치 못한 동작이 발생할 수 있습니다. 이 컨테이너를 하나 만드는 코드를 프로그래밍 방식으로 작성한 후 폼 또는 컨테이너에 디자인 타임 선 또는 도형 컨트롤을 추가하는 경우 디자이너에서 만든 ShapeContainer를 사용하도록 해당 코드를 수정해야 합니다.

예제

다음 예제에서는 기존 ShapeContainer를 검사하고 New 메서드를 사용하여 런타임에 만든 OvalShape 컨트롤의 Parent 속성을 설정합니다.

Private Sub Form1_Load(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles MyBase.Load
    Dim NewOval As New OvalShape
    Dim i As Integer
    Dim found As Boolean
    ' Loop through the Controls collection.
    For i = 0 To Me.Controls.Count - 1
        ' If a ShapeContainer is found, make it the parent.
        If TypeOf Controls.Item(i) Is ShapeContainer Then
            NewOval.Parent = Controls.Item(i)
            found = True
            Exit For
        End If
    Next
    ' If no ShapeContainer is found, create one and set the parents.
    If found = False Then
        Dim sc As New ShapeContainer
        sc.Parent = Me
        NewOval.Parent = sc
    End If
    NewOval.Size = New Size(200, 300)
End Sub
private void form1_Load(System.Object sender, System.EventArgs e)
{
    OvalShape NewOval = new OvalShape();
    int i;
    bool found = false;
    // Loop through the Controls collection.
    for (i = 0; i < this.Controls.Count; i++)
    {
        // If a ShapeContainer is found, make it the parent.
        if (this.Controls[i] is ShapeContainer)
        {
            NewOval.Parent = ((ShapeContainer)this.Controls[i]);
            found = true;
            break;
        }
    }
    // If no ShapeContainer is found, create one and set the parents.
    if (found == false)
    {
        ShapeContainer sc = new ShapeContainer();
        sc.Parent = this;
        NewOval.Parent = sc;
    }
    NewOval.Size = new Size(200, 300);
}

상속 계층 구조

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Windows.Forms.Control
        System.Windows.Forms.ScrollableControl
          System.Windows.Forms.ContainerControl
            System.Windows.Forms.UserControl
              Microsoft.VisualBasic.PowerPacks.ShapeContainer

스레드로부터의 안전성

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

참고 항목

참조

ShapeContainer 멤버

Microsoft.VisualBasic.PowerPacks 네임스페이스

기타 리소스

Line 및 Shape 컨트롤 소개(Visual Studio)

방법: LineShape 컨트롤로 선 그리기(Visual Studio)

방법: OvalShape 및 RectangleShape 컨트롤을 사용하여 도형 그리기(Visual Studio)