Hallo,
Ich benutze ein Formular als Vorlage. Dieses beinhaltet eine Property.Imports System.ComponentModel
Imports System.Drawing.Design
Public Class Form1
Private iItems As New cup_uc.cls_CUPItemCollection
<Editor(GetType(cup_uc.cls_CUPItemCollectionEditor), GetType( _
UITypeEditor)), _
DefaultValue(GetType(cup_uc.cls_CUPItemCollection), Nothing), _
Category("CUP"), Description(""), Browsable(True), Bindable(False)> _
Public Property cupItems() As cup_uc.cls_CUPItemCollection
Get
Return iItems
End Get
Set(ByVal Value As cup_uc.cls_CUPItemCollection)
iItems = Value
End Set
End Property
End Class Die Property enthält eine Collection von, ich nenne sie mal 'Objekte'/n. die Klasse der Objekte, sowie die Collection sind beides Klassen, die von mir angelegt wurden.
Die Collection
<Serializable()> _
Public Class cls_CUPItemCollection
Public CUPItemsCollection As Collection
Public Sub New()
End Sub
Public Sub New(ByVal CUP_ItemsCollection As Collection)
CUPItemsCollection = CUP_ItemsCollection
End Sub
Public Overrides Function ToString() As String
Dim currentObject As cup_uc.cls_CUPItem 'Object
Dim ReturnString As String = ""
Dim Counter As Integer = 0
Try
For Each currentObject In CUPItemsCollection
Counter = Counter + 1
Next
If Counter = 1 Then
ReturnString = Counter.ToString & " CUP Item "
Else
ReturnString = Counter.ToString & " CUP Items "
End If
Catch ex As Exception
' Debug.WriteLine(ex.Message)
End Try
Return ReturnString
End Function
End Class und die Objekte (hier nur mit einer Eigenschaft. Eigentlich sind da noch ein paar Variablen und Eigenschaften mehr drinn.)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 Dann gibt es da noch ein Formular und ein Steuerelement, mit denen ich die Eingabe über das PropertyGrid im Designer ermögliche.
Mein Problem : Wenn ich die EXE der Anwendung mit allem Zubehör auf ein Netzlaufwerk kopiere bekomme ich eine Fehlermeldung beim Starten. 'Programm hat Fehler verursacht und muss geschlossen werden.'
Lokal läuft es und wenn ich die Property aus dem Formular nehme dann läuft es auch über das Netzlaufwerk. Das Problem liegt eindeutig an dem <Serializable()> - Attribut. Das Benötige ich aber in der Collection und in den 'Objekten', damit die Values der Property im .resx-File des Formulares speichern kann.
Wie kann ich das Problem lösen, oder wie muss ich die Klassen umschreiben, dass es über das Netzlaufwerk läuft?
PS: Ich komme leider nicht drumherum. Das Programm muss über das Netzlaufwerk laufen. |