wroxstyleconverter.vb

来自「ASP.NET服务器控件高级编程电子书」· VB 代码 · 共 65 行

VB
65
字号
Imports System
Imports System.IO
Imports System.Web.UI
Imports System.Web.UI.Design
Imports System.Web.UI.WebControls
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Collections

Namespace WroxDesignVB.Design

    Public Class WroxStylerConverter : Inherits TypeConverter

        Private _stylers As ArrayList = New ArrayList()
        Private WithEvents svc As IComponentChangeService

        Public Sub New()
        End Sub

        Public Overloads Overrides Function GetStandardValuesSupported( _
                ByVal context As ITypeDescriptorContext) As Boolean

            If Not (_stylers.Contains(context.Instance)) Then
                _stylers.Add(context.Instance)
                Return True
            End If
        End Function

        Public Overloads Overrides Function GetStandardValuesExclusive( _
                ByVal context As ITypeDescriptorContext) As Boolean
            Return True
        End Function

        Public Overloads Overrides Function GetStandardValues( _
                ByVal context As ITypeDescriptorContext) As StandardValuesCollection

            Dim list As System.Collections.ArrayList = New System.Collections.ArrayList()
            Dim comp As IComponent

            For Each comp In context.Container.Components
                If (TypeOf (comp) Is WroxButton) Then list.Add(CType(comp, WroxButton).ID)
            Next

            svc = CType(context.GetService(GetType(IComponentChangeService)), IComponentChangeService)

            Return New StandardValuesCollection(list)
        End Function

        Private Sub OnRemove(ByVal sender As Object, ByVal e As ComponentEventArgs) Handles svc.ComponentRemoved
            If (_stylers.Contains(e.Component)) Then _
                _stylers.Remove(e.Component)
        End Sub

        Private Sub OnRename(ByVal sender As Object, ByVal e As ComponentRenameEventArgs) Handles svc.ComponentRename
            If (TypeOf (e.Component) Is WroxButton) Then
                Dim st As WroxStyler
                For Each st In _stylers
                    If (e.OldName = st.RelatedButtonID) Then _
                        TypeDescriptor.GetProperties(st).Item("RelatedButtonID").SetValue(st, e.NewName)
                Next
            End If
        End Sub

    End Class
End Namespace

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?