Control.AddParsedSubObject メソッド
アセンブリ: System.Web (system.web.dll 内)


オーバーライドしない限り、このメソッドはサーバー コントロールの ControlCollection オブジェクトに LiteralControl オブジェクトを自動的に追加します。このコレクションは、Control.Controls プロパティによってアクセスできます。

カスタム サーバー コントロールの例を次に示します。このコントロールは、AddParsedSubObject メソッドを使用して、このコントロールの開始タグと終了タグの間で宣言されている要素が TextBox Web サーバー コントロールかどうかを確認します。Web サーバー コントロールの場合、これらの要素は ArrayList オブジェクト items に追加されます。オーバーライドされた CreateChildControls メソッドが呼び出されると、ArrayList が反復処理され、その中の各オブジェクトがカスタム サーバー コントロールの ControlCollection に追加されます。
' 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

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からControl.AddParsedSubObject メソッドを検索する場合は、下記のリンクをクリックしてください。

- Control.AddParsedSubObject メソッドのページへのリンク