Selbstserstelltes MDIpanel Problem "Fehler bei der Codegenerierung für die forms-Eigenschaft. Fehler: 'Der Typ "System.Windows.Forms.Form" in Assembly

  • VB.NET

    Selbstserstelltes MDIpanel Problem "Fehler bei der Codegenerierung für die forms-Eigenschaft. Fehler: 'Der Typ "System.Windows.Forms.Form" in Assembly

    Ich habe meine "eigene" kleine Klasse geschrieben, mit der ich ein MDIpanel habe, dass in einem Panel "sitzt".
    Hier mal ein Video: youtube.com/watch?v=8wAkWmJvu7Y

    Wenn ich das Panel einfüge und die Fehler weg klicke ist alles kein Problem und wenn ich das Panel ganz oft einfügen kommt der Fehler auch nicht mehr...
    Aber der Fehler kommt immer noch wenn ich das Projekt z.B. speichern will :cursing: :cursing:

    Die Kommentare hab ich eigentlich eher aus Langeweile hinzugefügt, diese also nicht allzu ernst nehmen :saint:

    Hier die Klasse:

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Class MDIPanel
    3. Inherits System.Windows.Forms.Panel 'Wir erben vom Panel, damit wir die Form (die ihm untergeordnet wird) einfach
    4. 'in der Hautpform( z.B. Form1) herumschieben können
    5. Private _forms As New List(Of Form) 'Einfache Liste zum Hinzufügen/Entfernen von Formen
    6. Public Property forms As List(Of Form)
    7. Get
    8. Return _forms
    9. End Get
    10. Set(ByVal value As List(Of Form))
    11. _forms = value
    12. End Set
    13. End Property
    14. Private MDIForm As New Form 'Wir benutzen den MDIContainer. Man kann natürlich auch das Panel selbst verwenden
    15. 'mit dieser Variante haben wir aber den Vorteil von Skrollbalken
    16. Public ReadOnly Property getMDIForm As Form 'Zum lesen von Informationen über die MDIForm, eigentlich kann man diesen Teil auch
    17. Get 'weglassen
    18. Return MDIForm
    19. End Get
    20. End Property
    21. <DllImport("user32.dll")> _
    22. Private Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
    23. End Function 'Besser als Me(dem Panel).Controls.Add(Form zum hinzufügen)
    24. 'Code wird zum einfachen unter/überordnen von Handeln(Formen, Controls, usw.) benutzt
    25. Sub New()
    26. MDIForm = New Form 'Neue Instanz erstellen
    27. MDIForm.IsMdiContainer = True 'Form als MdiContainer setzten
    28. MDIForm.StartPosition = FormStartPosition.Manual 'Muss man aktivieren, damit man die Position vor Start ändern kann
    29. MDIForm.Location = New Point(1, 1) 'Position anpassen
    30. MDIForm.Size = New Size(Me.Size.Width + 1, Me.Size.Height + 1) 'Größe anpassen
    31. MDIForm.FormBorderStyle = FormBorderStyle.None 'Damit man die Form nicht bewegen kann
    32. SetParent(MDIForm.Handle, Me.Handle) 'Me.Controls.Add geht nicht, da eine Form nicht MdiContainer und Control(toplevel = false) gleichzeitig seien kann
    33. MDIForm.Show() 'Form erstellen und anzeigen
    34. End Sub
    35. Public Sub addForm(ByVal form As Form)
    36. If form.IsDisposed = True Then 'Falls eine Form, die bereits entfernt bzw. für den RAM , mit .Dipose, freigeben wurde
    37. Return 'versucht wird hinzuzufügen wird abgebrochen
    38. End If
    39. form.MdiParent = MDIForm 'Der MDIForm unterstellen
    40. form.Show() 'Form anzeigen
    41. forms.Add(form) 'Und die Form zur Liste hinzufügen
    42. End Sub
    43. Public Sub removeForm(ByVal form As Form)
    44. form.Close() 'Form schließen
    45. form.Dispose() 'Speicher freigeben
    46. forms.Remove(form) 'Form von Liste entfernen
    47. End Sub
    48. Private Sub MDIPanel_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    49. MDIForm.Size = New Size(Me.Size.Width + 1, Me.Size.Height + 1) 'Größe der MDIForm der des Panels(me) anpassen
    50. End Sub
    51. End Class



    MfG