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.

134 lines
4.6 KiB

Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Windows.Forms.Design
Namespace PropertyGridEx
<Serializable()> _
Public Class CustomChoices
Inherits ArrayList
Public Sub New()
End Sub
Public Sub New(ByVal array As ArrayList, ByVal IsSorted As Boolean)
Me.AddRange(array)
If IsSorted Then Me.Sort()
End Sub
Public Sub New(ByVal array As ArrayList)
Me.AddRange(array)
End Sub
Public Sub New(ByVal array() As String, ByVal IsSorted As Boolean)
Me.AddRange(array)
If IsSorted Then Me.Sort()
End Sub
Public Sub New(ByVal array() As String)
Me.AddRange(array)
End Sub
Public Sub New(ByVal array() As Integer, ByVal IsSorted As Boolean)
Me.AddRange(array)
If IsSorted Then Me.Sort()
End Sub
Public Sub New(ByVal array() As Integer)
Me.AddRange(array)
End Sub
Public Sub New(ByVal array() As Double, ByVal IsSorted As Boolean)
Me.AddRange(array)
If IsSorted Then Me.Sort()
End Sub
Public Sub New(ByVal array() As Double)
Me.AddRange(array)
End Sub
Public Sub New(ByVal array() As Object, ByVal IsSorted As Boolean)
Me.AddRange(array)
If IsSorted Then Me.Sort()
End Sub
Public Sub New(ByVal array() As Object)
Me.AddRange(array)
End Sub
Public ReadOnly Property Items() As ArrayList
Get
Return Me
End Get
'Set(ByVal value As ArrayList)
' MyBase.Clear()
' MyBase.AddRange(value)
'End Set
End Property
Public Class CustomChoicesTypeConverter
Inherits TypeConverter
Private oChoices As CustomChoicesAttributeList = Nothing
Public Overrides Function GetStandardValuesSupported(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
Dim Choices As CustomChoicesAttributeList = context.PropertyDescriptor.Attributes(GetType(CustomChoicesAttributeList))
If Not oChoices Is Nothing Then Return True
If Not Choices Is Nothing Then
oChoices = Choices
GetStandardValuesSupported = True
Else
GetStandardValuesSupported = False
End If
End Function
Public Overrides Function GetStandardValuesExclusive(ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean
Dim Choices As CustomChoicesAttributeList = context.PropertyDescriptor.Attributes(GetType(CustomChoicesAttributeList))
If Not oChoices Is Nothing Then Return True
If Not Choices Is Nothing Then
oChoices = Choices
GetStandardValuesExclusive = True
Else
GetStandardValuesExclusive = False
End If
End Function
Public Overrides Function GetStandardValues(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
Dim Choices As CustomChoicesAttributeList = context.PropertyDescriptor.Attributes(GetType(CustomChoicesAttributeList))
If Not oChoices Is Nothing Then
Return oChoices.Values
End If
Return MyBase.GetStandardValues(context)
End Function
End Class
Public Class CustomChoicesAttributeList
Inherits Attribute
Private oList As New ArrayList
Public ReadOnly Property Item() As ArrayList
Get
Return Me.oList
End Get
End Property
Public ReadOnly Property Values() As TypeConverter.StandardValuesCollection
Get
Return New TypeConverter.StandardValuesCollection(Me.oList)
End Get
End Property
Public Sub New(ByVal List() As String)
MyBase.New()
oList.AddRange(List)
End Sub
Public Sub New(ByVal List As ArrayList)
MyBase.New()
oList.AddRange(List)
End Sub
Public Sub New(ByVal List As ListBox.ObjectCollection)
MyBase.New()
oList.AddRange(List)
End Sub
End Class
End Class
End Namespace