Hallo,
ich habe eine Property, welche über einen Benutzerdeffinierten Dialog editiert wird.
Die Propertywerte werden in einer Hashtable gespeichert und können n Elemente aufnehmen. Diese Elemente basieren auf einer von mir erstellten Klasse.
Mein Problem ist, dass ich immer nur ein Steuerelement editieren kann.
Jetzt hätte ich gerne, dass wenn z.B. zwei Steuerelemente ausgewählt werden und der Editor (Dialog) über das Propertygrid gestartet wird, dieser nicht Abbricht(Der Objectverweis wurde nicht auf eine Instanz festgelegt (ja klar, sind ja jetzt mehrere)), sondern alle gemeinsamen Elemente anzeigt werden.
Wenn der Editor dann geschlossen wird, dann sollen alle neuen Elemente bei allen zuvor ausgewählten Steuerelementen, in der Liste (Hashtable) angefügt werden.
Hier mein Quelltext.'---Property in z.B. meiner Textbox
Private iItems As cls_CUPItemCollection
'''<summary>
''' Hier werden alle Berechtigungen für das Steuerelement gespeichert.
''' Über diese Auflistung kann ermittelt werden, ob die Berechtigungen
''' mit denen des Users übereinstimmen.
''' </summary>
<Editor(GetType(cls_CUPItemCollectionEditor), GetType(UITypeEditor)), _
DefaultValue(GetType(cls_CUPItemCollection), Nothing), _
Category("CUP"), Description( _
"Hier werden alle Berechtigungen für das Steuerelement gespeichert." & _
" Über diese Auflistung kann ermittelt werden, ob die Berechtigungen " & _
"mit denen des Users übereinstimmen. "), Browsable(True), Bindable(False)> _
Public Property cupItems() As cls_CUPItemCollection
Get
Return iItems
End Get
Set(ByVal Value As cls_CUPItemCollection)
iItems = Value
End Set
End Property '---cls_CUPItem
Imports System.ComponentModel
Imports System.Drawing.Design
<Serializable()> _
Public Class cls_CUPItem
Private CUPItem_ID As Integer
Public Sub New()
End Sub
Protected Overrides Sub Finalize()
MyBase.Finalize()
End Sub
<Category("CUP"), Description(""), Browsable(True), Bindable(False)> _
Public Property CUPItemID() As Integer
Get
Return CUPItem_ID
End Get
Set(ByVal value As Integer)
CUPItem_ID = value
End Set
End Property
End Class '---cls_CUPItemCollection
<Serializable()> _
Public Class cls_CUPItemCollection
Public CUPItemsCollection As Hashtable
Public Sub New()
End Sub
Public Sub New(ByVal CUP_ItemsCollection As Hashtable)
CUPItemsCollection = CUP_ItemsCollection
End Sub
Public Overrides Function ToString() As String
Dim ReturnString As String = ""
Dim Counter As Integer = 0
Try
If CUPItemsCollection.Count = 1 Then
ReturnString = CUPItemsCollection.Count.ToString & " CUP Item "
Else
ReturnString = CUPItemsCollection.Count.ToString & " CUP Items "
End If
Catch ex As Exception
End Try
Return ReturnString
End Function
End Class |