You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.4 KiB
61 lines
2.4 KiB
Imports System.ComponentModel
|
|
Imports System.Drawing.Design
|
|
Imports System.Windows.Forms
|
|
|
|
Namespace PropertyGridEx
|
|
Public Class UICustomEventEditor
|
|
Inherits System.Drawing.Design.UITypeEditor
|
|
|
|
Public Delegate Function OnClick(ByVal sender As Object, ByVal e As EventArgs) As Object
|
|
Protected m_MethodDelegate As UICustomEventEditor.OnClick
|
|
Protected m_sender As CustomProperty.CustomPropertyDescriptor
|
|
|
|
Public Overloads Overrides Function GetEditStyle(ByVal context As _
|
|
ITypeDescriptorContext) As UITypeEditorEditStyle
|
|
If Not context Is Nothing AndAlso Not context.Instance Is Nothing Then
|
|
If Not context.PropertyDescriptor.IsReadOnly Then
|
|
Return UITypeEditorEditStyle.Modal
|
|
End If
|
|
End If
|
|
Return UITypeEditorEditStyle.None
|
|
End Function
|
|
|
|
<RefreshProperties(RefreshProperties.All)> _
|
|
Public Overloads Overrides Function EditValue( _
|
|
ByVal context As ITypeDescriptorContext, _
|
|
ByVal provider As System.IServiceProvider, _
|
|
ByVal value As [Object]) As [Object]
|
|
If context Is Nothing OrElse provider Is Nothing _
|
|
OrElse context.Instance Is Nothing Then
|
|
Return MyBase.EditValue(provider, value)
|
|
End If
|
|
If m_MethodDelegate Is Nothing Then
|
|
Dim attr As DelegateAttribute = context.PropertyDescriptor.Attributes(GetType(DelegateAttribute))
|
|
m_MethodDelegate = attr.GetMethod
|
|
End If
|
|
If m_sender Is Nothing Then
|
|
m_sender = TryCast(context.PropertyDescriptor, CustomProperty.CustomPropertyDescriptor)
|
|
End If
|
|
Return m_MethodDelegate.Invoke(m_sender, Nothing)
|
|
End Function
|
|
|
|
<AttributeUsage(AttributeTargets.Property)> _
|
|
Public Class DelegateAttribute
|
|
Inherits Attribute
|
|
Protected m_MethodDelegate As UICustomEventEditor.OnClick
|
|
|
|
Public ReadOnly Property GetMethod() As UICustomEventEditor.OnClick
|
|
Get
|
|
Return Me.m_MethodDelegate
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub New(ByVal MethodDelegate As UICustomEventEditor.OnClick)
|
|
MyBase.New()
|
|
Me.m_MethodDelegate = MethodDelegate
|
|
End Sub
|
|
End Class
|
|
|
|
End Class
|
|
End Namespace
|