|
|
|
Select your preferred language |
The FriendlyNamePropertyDescriptor
Note how every proprty is overridden to return the corresponding data from
the PropertyDescriptor handed in in the constructor. The exception being the
DisplayName property.
public class
FriendlyNamePropertyDescriptor : PropertyDescriptor
{
private
PropertyDescriptor basePropertyDescriptor;
public
FriendlyNamePropertyDescriptor(PropertyDescriptor pd) :
base(pd)
{
this.basePropertyDescriptor=pd;
}
public
override void
AddValueChanged(object component, EventHandler
handler)
{
this.basePropertyDescriptor.AddValueChanged
(component, handler);
}
public
override AttributeCollection Attributes
{
get
{
return
this.basePropertyDescriptor.Attributes;
}
}
public
override bool
CanResetValue(object component)
{
return
this.basePropertyDescriptor.CanResetValue(component);
}
public
override string
Category
{
get
{
return
this.basePropertyDescriptor.Category;
}
}
public
override Type ComponentType
{
get
{
return
this.basePropertyDescriptor.ComponentType;
}
}
public
override TypeConverter Converter
{
get
{
return
this.basePropertyDescriptor.Converter;
}
}
public
override string
Description
{
get
{
return
this.basePropertyDescriptor.Description;
}
}
public
override bool
DesignTimeOnly
{
get
{
return
this.basePropertyDescriptor.DesignTimeOnly;
}
}
//This method is overridden to take notice of the FriendlyNameAttribute
//if it
has been applied to the property
public
override string
DisplayName
{
get
{
foreach(Attribute
a in this.AttributeArray)
{
if(a
is FriendlyNameAttribute)
{
return
((FriendlyNameAttribute)a).Name;
}
}
return
this.basePropertyDescriptor.DisplayName;
}
}
public
override bool
Equals(object obj)
{
return
this.basePropertyDescriptor.Equals (obj);
}
public
override PropertyDescriptorCollection
GetChildProperties(object instance, Attribute[]
filter)
{
return
this.basePropertyDescriptor.GetChildProperties
(instance, filter);
}
public
override object
GetEditor(Type editorBaseType)
{
return
this.basePropertyDescriptor.GetEditor (editorBaseType);
}
public
override int
GetHashCode()
{
return
this.basePropertyDescriptor.GetHashCode ();
}
public
override object
GetValue(object component)
{
return
this.basePropertyDescriptor.GetValue(component);
}
public
override bool
IsBrowsable
{
get
{
return
this.basePropertyDescriptor.IsBrowsable;
}
}
public
override bool
IsLocalizable
{
get
{
return
this.basePropertyDescriptor.IsLocalizable;
}
}
public
override bool
IsReadOnly
{
get
{
return
this.basePropertyDescriptor.IsReadOnly;
}
}
public
override string
Name
{
get
{
return
this.basePropertyDescriptor.Name;
}
}
public
override Type PropertyType
{
get
{
return
this.basePropertyDescriptor.PropertyType;
}
}
public
override void
RemoveValueChanged(object component,
EventHandler handler)
{
this.basePropertyDescriptor.RemoveValueChanged
(component, handler);
}
public
override void
ResetValue(object component)
{
this.basePropertyDescriptor.ResetValue(component);
}
public
override void
SetValue(object component,
object value)
{
this.basePropertyDescriptor.SetValue(component,
value);
}
public
override bool
ShouldSerializeValue(object component)
{
return
this.basePropertyDescriptor.ShouldSerializeValue(component);
}
public
override string
ToString()
{
return
this.basePropertyDescriptor.ToString ();
}
}
Public
Class FriendlyNamePropertyDescriptor
Inherits PropertyDescriptor
Private basePropertyDescriptor
As PropertyDescriptor
Public Sub
New(ByVal pd
As PropertyDescriptor)
MyBase.New(pd)
basePropertyDescriptor
= pd
End Sub
Public Overrides
ReadOnly Property
ComponentType() As System.Type
Get
Return
basePropertyDescriptor.ComponentType
End
Get
End Property
Public Overrides
ReadOnly Property
IsReadOnly() As Boolean
Get
Return
basePropertyDescriptor.IsReadOnly
End
Get
End Property
Public Overrides
ReadOnly Property
PropertyType() As System.Type
Get
Return
basePropertyDescriptor.PropertyType
End
Get
End Property
Public Overrides
ReadOnly Property
Attributes() As
System.ComponentModel.AttributeCollection
Get
Return
basePropertyDescriptor.Attributes
End
Get
End Property
Public Overrides
ReadOnly Property
Category() As String
Get
Return
basePropertyDescriptor.Category
End
Get
End Property
Public Overrides
ReadOnly Property
Converter() As
System.ComponentModel.TypeConverter
Get
Return
basePropertyDescriptor.Converter
End
Get
End Property
Public Overrides
ReadOnly Property
Description() As String
Get
Return
basePropertyDescriptor.Description
End
Get
End Property
Public Overrides
ReadOnly Property
DesignTimeOnly() As
Boolean
Get
Return
basePropertyDescriptor.DesignTimeOnly
End
Get
End Property
Public Overrides
ReadOnly Property
DisplayName() As String
Get
Dim
a As Attribute
For
Each a In
Attributes
If
TypeOf a Is
FriendlyNameAttribute Then
Return
CType(a, FriendlyNameAttribute).Name
End
If
Next
Return
basePropertyDescriptor.DisplayName 'only gets here if
there is no friendly name
End
Get
End Property
Public Overrides
ReadOnly Property
IsBrowsable() As
Boolean
Get
Return
basePropertyDescriptor.IsBrowsable
End
Get
End Property
Public Overrides
ReadOnly Property
IsLocalizable() As
Boolean
Get
Return
basePropertyDescriptor.IsLocalizable
End
Get
End Property
Public Overrides
ReadOnly Property
Name() As String
Get
Return
basePropertyDescriptor.Name
End
Get
End Property
Public Overrides
Sub AddValueChanged(ByVal
component As Object,
ByVal handler As
System.EventHandler)
basePropertyDescriptor.AddValueChanged(component,
handler)
End Sub
Public Overrides
Function CanResetValue(ByVal
component As Object)
As Boolean
Return
basePropertyDescriptor.CanResetValue(component)
End Function
Public Overloads
Overrides Function
Equals(ByVal obj As
Object) As
Boolean
Return
basePropertyDescriptor.Equals(obj)
End Function
Public Overloads
Overrides Function
GetChildProperties(ByVal instance
As Object,
ByVal filter() As
System.Attribute) As
System.ComponentModel.PropertyDescriptorCollection
Return
basePropertyDescriptor.GetChildProperties(instance, filter)
End Function
Public Overrides
Function GetEditor(ByVal
editorBaseType As System.Type)
As Object
Return
basePropertyDescriptor.GetEditor(editorBaseType)
End Function
Public Overrides
Function GetHashCode()
As Integer
Return
basePropertyDescriptor.GetHashCode()
End Function
Public Overrides
Function GetValue(ByVal
component As Object)
As Object
Return
basePropertyDescriptor.GetValue(component)
End Function
Public Overrides
Sub RemoveValueChanged(ByVal
component As Object,
ByVal handler As
System.EventHandler)
basePropertyDescriptor.RemoveValueChanged(component,
handler)
End Sub
Public Overrides
Sub ResetValue(ByVal
component As Object)
basePropertyDescriptor.ResetValue(component)
End Sub
Public Overrides
Sub SetValue(ByVal
component As Object,
ByVal value As
Object)
basePropertyDescriptor.SetValue(component,
value)
End Sub
Public Overrides
Function ShouldSerializeValue(ByVal
component As Object)
As Boolean
Return
basePropertyDescriptor.ShouldSerializeValue(component)
End Function
End
Class
Use the Back button on your browser to return to the
article