Condividi tramite


Classe ShapeContainer

Aggiornamento: novembre 2007

Fornisce un contenitore per i controlli LineShape, OvalShape, RectangleShape e per tutti gli altri controlli che derivano da Shape.

Spazio dei nomi:  Microsoft.VisualBasic.PowerPacks
Assembly:  Microsoft.VisualBasic.PowerPacks.Vs (in Microsoft.VisualBasic.PowerPacks.Vs.dll)

Sintassi

<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

Note

Un controllo LineShape, OvalShape o RectangleShape può essere contenuto solo in un oggetto ShapeContainer, che funge da area di disegno per i controlli Line e Shape.

Quando si aggiunge una linea o una forma a un form o a un contenitore in fase di progettazione, viene creato automaticamente, se non esiste già, un oggetto ShapeContainer. La proprietà Parent della linea o della forma viene impostata su tale oggetto ShapeContainer. La proprietà Parent dell'oggetto ShapeContainer viene impostata sul form o sul controllo contenitore a cui è stata aggiunta la linea o la forma.

Quando si crea una linea o una forma in fase di esecuzione mediante il metodo New, la proprietà Parent del controllo deve essere impostata su un oggetto ShapeContainer. Se esiste già un oggetto ShapeContainer per il form o il contenitore, è necessario impostare la proprietà Parent su tale oggetto ShapeContainer. Se non esiste un oggetto ShapeContainer, è possibile creare un oggetto ShapeContainer mediante il metodo New e impostarne la proprietà Parent sul form o sul contenitore.

Nota:

Prestare attenzione a non creare più oggetti ShapeContainer per ogni form o contenitore, poiché questa operazione può generare un comportamento imprevisto. Se si aggiunge un controllo Line o Shape della fase di progettazione a un form o a un contenitore dopo aver scritto codice per crearne uno a livello di codice, è necessario modificare tale codice in modo che utilizzi l'oggetto ShapeContainer creato dalla finestra di progettazione.

Esempi

Nell'esempio riportato di seguito viene verificata l'esistenza di un oggetto ShapeContainer e viene impostata la proprietà Parent di un controllo OvalShape creato in fase di esecuzione mediante il metodo New.

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);
}

Gerarchia di ereditarietà

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

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Membri ShapeContainer

Spazio dei nomi Microsoft.VisualBasic.PowerPacks

Altre risorse

Introduzione ai controlli Line e Shape (Visual Studio)

Procedura: disegnare linee con il controllo LineShape (Visual Studio)

Procedura: disegnare forme con i controlli OvalShape e RectangleShape (Visual Studio)