Freigeben über


Control.AddParsedSubObject-Methode

Benachrichtigt das Serversteuerelement, dass entweder ein XML- oder ein HTML-Element analysiert wurde, und fügt das Element dem ControlCollection-Objekt des Serversteuerelements hinzu.

Namespace: System.Web.UI
Assembly: System.Web (in system.web.dll)

Syntax

'Declaration
Protected Overridable Sub AddParsedSubObject ( _
    obj As Object _
)
'Usage
Dim obj As Object

Me.AddParsedSubObject(obj)
protected virtual void AddParsedSubObject (
    Object obj
)
protected:
virtual void AddParsedSubObject (
    Object^ obj
)
protected void AddParsedSubObject (
    Object obj
)
protected function AddParsedSubObject (
    obj : Object
)

Parameter

  • obj
    Ein Object, das das analysierte Element darstellt.

Hinweise

Wenn Sie diese Methode nicht überschreiben, fügt sie dem ControlCollection-Objekt des Steuerelements automatisch LiteralControl-Objekte hinzu. Auf diese Auflistung kann über die Control.Controls-Eigenschaft zugegriffen werden.

Beispiel

Im folgenden Beispiel wird ein benutzerdefiniertes Serversteuerelement veranschaulicht, das mithilfe der AddParsedSubObject-Methode bestimmt, ob es sich bei den zwischen den öffnenden und schließenden Tags dieses Steuerelements deklarierten Elementen um TextBox-Webserver-Steuerelemente handelt. Wenn ja, werden diese dem ArrayList-Objekt items hinzugefügt. Wenn die überschriebene CreateChildControls-Methode aufgerufen wird, durchläuft diese die ArrayList und fügt jedes darin enthaltene Objekt der ControlCollection des benutzerdefinierten Serversteuerelements hinzu.

' Custom ControlBuilder class. Interprets nested tag name "myitem" as a textbox.
Public Class MyControlBuilder
   Inherits ControlBuilder

   Public Overrides Function GetChildControlType(tagName As String, _
                             attributes As IDictionary) As Type
      If String.Compare(tagName, "myitem", True) = 0 Then
         Return GetType(TextBox)
      End If
      Return Nothing
   End Function
End Class

<ControlBuilderAttribute(GetType(MyControlBuilder))> Public Class MyControl
   Inherits Control
   ' Stores all the controls specified as nested tags.
   Private items As New ArrayList()

   ' This function is internally invoked by IParserAccessor.AddParsedSubObject(Object).
   Protected Overrides Sub AddParsedSubObject(obj As Object)
      If TypeOf obj Is TextBox Then
         items.Add(obj)
      End If
   End Sub

  ' Override 'CreateChildControls'.
   Protected Overrides Sub CreateChildControls()
      Dim myEnumerator As System.Collections.IEnumerator = items.GetEnumerator()
      While myEnumerator.MoveNext()
         Me.Controls.Add(CType(myEnumerator.Current, TextBox))
      End While
   End Sub
End Class
// Custom ControlBuilder class. Interprets nested tag name "myitem" as a textbox. 
public class MyControlBuilder : ControlBuilder 
{
   public override Type GetChildControlType(String tagName,
                                       IDictionary attributes)
   {
      if (String.Compare(tagName, "myitem", true) == 0) 
      {
         return typeof(TextBox);
      }
      return null;
   }
}

[ 
ControlBuilderAttribute(typeof(MyControlBuilder)) 
]
public class MyControl : Control
{
   // Store all the controls specified as nested tags.
   private ArrayList items = new ArrayList();
   
   // This function is internally invoked by IParserAccessor.AddParsedSubObject(Object).
   protected override void AddParsedSubObject(Object obj) 
   {
      if (obj is TextBox) 
      {
         items.Add(obj);
      }
   }

   // Override 'CreateChildControls'. 
   protected override void CreateChildControls()
   {
      System.Collections.IEnumerator myEnumerator = items.GetEnumerator();
      while(myEnumerator.MoveNext())
          this.Controls.Add((TextBox)myEnumerator.Current);
   }
}    
// Custom ControlBuilder class. Interprets nested tag name "myitem" as 
// a textbox. 
public class MyControlBuilder extends ControlBuilder
{
    public Type GetChildControlType(String tagName, IDictionary attributes)
    {
        if (String.Compare(tagName, "myitem", true) == 0) {
            return TextBox.class.ToType();
        }
        return null;
    } //GetChildControlType
} //MyControlBuilder

/** @attribute ControlBuilderAttribute(MyControlBuilder.class)
 */
public class MyControl extends Control
{
    // Store all the controls specified as nested tags.
    private ArrayList items = new ArrayList();

    // This function is internally invoked by 
    // IParserAccessor.AddParsedSubObject(Object).
    protected void AddParsedSubObject(Object obj)
    {
        if (obj instanceof TextBox) {
            items.Add(obj);
        }
    } //AddParsedSubObject

    // Override 'CreateChildControls'. 
    protected void CreateChildControls()
    {
        System.Collections.IEnumerator myEnumerator = items.GetEnumerator();
        while (myEnumerator.MoveNext()) {
            this.get_Controls().Add((TextBox)myEnumerator.get_Current());
        }
    } //CreateChildControls
} //MyControl 

Plattformen

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

Control-Klasse
Control-Member
System.Web.UI-Namespace
ControlCollection