Hallo zusammen,
ich habe folgendes Problem (VS 2003):
Ich habe eine MDI Anwendung, welche soweit auch inklusive Menüs im Parent sowie in den Childfenstern gut funktioniert hat.
Jetzt habe ich versucht eine dynamische Liste der zuletzt geöffneten Dateien am Ende des ersten Menüeintrages („MNDatei“) hinzuzufügen.
Dabei verwende ich eine Klasse zum Kürzen der angezeigten Pfade. Da das normale MenuItem Objekt leider keinen „Tag„ Property hat, habe ich aus der Literatur den Vorschlag aufgegriffen eine abgeleitete Klasse „FileMenuItem“ zu erstellen, welche zusätzlich noch einen Property Eintrag für den kompletten Pfad und gleich auch noch ein „Tag“ mitbekommen hat.
Hier einmal den Code der Klasse:
Public Class FileMenuItem
Inherits MenuItem
' Der vollständige Pfad
Public ReadOnly Path As String
' Zusätzliche Referenz zur freien Verfügung
Public Tag As Object
Public Sub New(ByVal path As String, ByVal ctrl As Control, _
ByVal width As Integer, ByVal tag As Object, _
ByVal handler As System.EventHandler)
' die zusätzlichen Parameter werden für die Pfakürzungroutine benötigt....
Dim short as string = ' --> Aufruf der Pfadkürzungsroutine
' Delegation an Konstruktor der Basisklasse
MyBase.New(short, handler)
' Zusätzliche Member-Variablen setzen
Me.Path = path
Me.Tag = tag
End Sub Die neuen Menu Einträge erstelle ich nun mit folgender Prozedur:
....
MNDatei.MenuItems.Add(New FileMenuItem(CStr(ConfigData.LastOpen(i)), Me, 150, _
Nothing, AddressOf MenuClick))
.... Das ganze klapp auch wunderbar, solange ich kein MDI Child geladen habe. Sowie nun ein MDI Child geladen wird kommt es zu folgender Fehlermeldung:
Eine nicht behandelte Ausnahme des Typs 'System.MissingMethodException' ist in mscorlib.dll aufgetreten.
Zusätzliche Informationen: Für dieses Objekt wurde kein parameterloser Konstruktor definiert.
Sowie ich den Fehler mir einem Try Block abfange, verschwindet das Menu komplett, sowie ein MDI Child geladen ist. Schließe ich nun das Child Fenster, bekomme ich mein Menu so wie ich es gerne hätte. Versuche ich nun aber ein neues Child Fenster zu öffnen bekomme ich wieder eine exeption und kann keine weiteren Fenster öffnen.
Habt Ihr evtl. eine Idee, wo das Problem liegen könnte?
Cu
THOMAS |