ControlBuilderAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa klasę ControlBuilder do tworzenia kontrolki niestandardowej w analizatorze ASP.NET. Klasa ta nie może być dziedziczona.
public ref class ControlBuilderAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class ControlBuilderAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class)>]
type ControlBuilderAttribute = class
inherit Attribute
Public NotInheritable Class ControlBuilderAttribute
Inherits Attribute
- Dziedziczenie
- Atrybuty
Przykłady
Poniższy przykład kodu tworzy dostosowaną listę wyboru, która służy do wyświetlania komunikatu na SelectedIndex
podstawie wartości i Message
zdefiniowanych w czasie wykonywania. Poniższy wiersz polecenia służy do kompilowania pliku wykonywalnego.
vbc /r:System.dll /r:System.Web.dll /r:System.Drawing.dll /t:library /out:myWebAppPath/Bin/vb_MyControlBuilderAtt.dll ControlBuilderAtt.vb
csc /t:library /out:myWebAppPath/Bin/cs_MyControlBuilderAtt.dll ControlBuilderAtt.cs
/* File name: controlBuilderAttribute.cs. */
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
namespace CustomControls
{
public class MyCS_Item : Control
/* Class name: MyCS_Item.
* Defines the child control class.
*/
{
private String _message;
public String Message
{
get
{
return _message;
}
set
{
_message = value;
}
}
}
public class CustomParseControlBuilder : ControlBuilder
/* Class name: CustomParserControlBuilder.
* Defines the functions and data to be used in building custom controls.
* This class is referenced using the ControlBuilderAttribute class. See class below.
*/
{
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
public override Type GetChildControlType(String tagName, IDictionary attributes)
{
if (String.Compare(tagName, "customitem", true) == 0)
{
return typeof(MyCS_Item);
}
return null;
}
}
[
ControlBuilderAttribute(typeof(CustomParseControlBuilder))
]
public class MyCS_CustomParse : Control
/* Class name: MyCS_CustomParse.
* Performs custom parsing of a MyCS_CustomParse control type
* child control.
* If the child control is of the allowed type, it is added to an
* array list. This list is accessed, using the container control attribute
* SelectedIndex, to obtain the related child control Message attribute to be displayed.
*/
{
private ArrayList _items = new ArrayList();
private int _selectedIndex = 0;
public int SelectedIndex
{
get
{
return _selectedIndex;
}
set
{
_selectedIndex = value;
}
}
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
protected override void AddParsedSubObject(Object obj)
/* Function name: AddParsedSubObject.
* Updates the array list with the allowed child objects.
* This function is called during the parsing of the child controls and
* after the GetChildControlType function defined in the associated control
* builder class.
*/
{
if (obj is MyCS_Item)
{
_items.Add(obj);
}
}
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
protected override void Render(HtmlTextWriter output)
/* Function name: Render.
* Establishes the rules to render the built control. In this case, a message is
* rendered that is a function of the parent control SelectedIndex attribute and
* the related child Message attribute.
*/
{
if (SelectedIndex < _items.Count)
{
output.Write("<span style='background-color:aqua; color:red; font:8pt tahoma, verdana;'><b>" +
((MyCS_Item) _items[SelectedIndex]).Message + "</b></span>" );
}
}
}
}
'File name: controlBuilderAttribute.vb.
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Collections
Namespace CustomControls
Public Class MyVB_Item: Inherits Control
Private _message As String
Public Property Message() As String
Get
Return _message
End Get
Set
_message = value
End Set
End Property
End Class
Public Class VB_CustomParseControlBuilder: Inherits ControlBuilder
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Public Overrides Function GetChildControlType(TagName As String, attributes As IDictionary) As Type
If (TagName = "customitem") Then
Return GetType(CustomControls.MyVB_Item)
End If
Return Nothing
End Function 'GetChildControlType
End Class
<ControlBuilderAttribute(GetType(VB_CustomParseControlBuilder))> Public Class MyVB_CustomParse: Inherits Control
Private _items As New ArrayList
Private _selectedIndex As Integer = 0
Public Property SelectedIndex() As Integer
Get
Return _selectedIndex
End Get
Set
_selectedIndex = value
End Set
End Property
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Sub AddParsedSubObject(obj As Object)
If TypeOf obj Is MyVB_Item Then
_items.Add(obj)
End If
End Sub
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Protected Overrides Sub Render(output As HtmlTextWriter)
output.Write(("<span style='background-color:aqua; color:red; font:8pt tahoma, verdana;'><b>" + CType(_items(SelectedIndex), MyVB_Item).Message + "</b></span>"))
End Sub
End Class
End Namespace 'CustomControls
W poniższym przykładzie użyto kontrolki niestandardowej zdefiniowanej powyżej. W szczególności przypisuje SelectedIndex
wartości i Message
w czasie wykonywania w celu określenia komunikatu do renderowania. Zwróć uwagę, że wartości przedstawione w Register
dyrektywie odzwierciedlają poprzedni wiersz polecenia.
<%@ Register TagPrefix="custom" Assembly="myControlBuilderAtt" Namespace="CustomControls" %>
<h4>Using ControlBuilderAttribute Class<h4>
<form runat="server">
<custom:MyVB_CustomParse SelectedIndex="3" runat=server>
<customitem Message="Visual Basic version. Item One selected"/>
<customitem Message="Visual Basic version. Item Two selected"/>
<customitem Message="Visual Basic version. Item Three selected"/>
<customitem Message="Visual Basic version. Item Four selected"/>
</custom:MyVB_CustomParse>
</form>
<%@ Register TagPrefix="custom" Assembly="myControlBuilderAtt" Namespace="CustomControls" %>
<h4>Using ControlBuilderAttribute Class<h4>
<form runat="server">
<custom:MyCS_CustomParse SelectedIndex="2" runat=server>
<customitem Message="C# version. Item One selected"/>
<customitem Message="C# version. Item Two selected"/>
<customitem Message="C# version. Item Three selected"/>
<customitem Message="C# version. Item Four selected"/>
</custom:MyCS_CustomParse>
</form>
Uwagi
Ten atrybut określa konstruktora Type do utworzenia kontrolki niestandardowej, jak pokazano w poniższym kodzie:
[ControlBuilderAttribute(typeof(ControlBuilderType))]
Konstruktory
ControlBuilderAttribute(Type) |
Określa konstruktora kontrolek dla kontrolki niestandardowej. |
Pola
Default |
Określa nowy ControlBuilderAttribute obiekt. Domyślnie nowy obiekt ma wartość null. To pole jest tylko do odczytu. |
Właściwości
BuilderType |
Type Pobiera kontrolkę skojarzona z atrybutem. Ta właściwość jest tylko do odczytu. |
TypeId |
Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego elementu Attribute. (Odziedziczone po Attribute) |
Metody
Equals(Object) |
Pobiera wartość wskazującą, czy bieżący ControlBuilderAttribute jest identyczny z określonym obiektem. |
GetHashCode() |
Zwraca kod skrótu ControlBuilderAttribute obiektu. |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
IsDefaultAttribute() |
Określa, czy bieżący konstruktor kontrolek jest domyślny. |
Match(Object) |
W przypadku zastąpienia w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po Attribute) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie obiektu, którego można użyć do pobrania informacji o typie interfejsu. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone po Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt. (Odziedziczone po Attribute) |