Usercontrol wird im Designer nicht autom. initialisiert

  • VB.NET
  • .NET (FX) 4.5–4.8

    Usercontrol wird im Designer nicht autom. initialisiert

    Hallo liebe Leute,

    ich habe mir ein Usercontrol (einen Container) erstellt, welches später diverse andere Usercontrols beinhalten soll.
    Sodass ich nachher nur Befehle benutze wie "container.AddTextbox" oder "container.AddDateField"

    >> Quellcode ganz unten <<

    Ich habe dieses Container-Control nahezu fertig, erstelle es und ziehe es aus dem Werkzeugkasten auf eine neue Form.
    Dabei tritt ein Fehler auf.
    Datei: "Application.Designer"
    Methode: "OnCreateMainForm()" bei deren einzigen Codezeile: "Me.MainForm = Global.WindowsApplication1.Form1"
    Meldung:
    Eine Ausnahme (erste Chance) des Typs "System.InvalidOperationException" ist in WindowsApplication1.exe aufgetreten.
    Zusätzliche Informationen: Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt..


    So sieht die "Form1.Designer"-Datei aus:

    Quellcode

    1. <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    2. Partial Class Form1
    3. Inherits System.Windows.Forms.Form
    4. 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    5. <System.Diagnostics.DebuggerNonUserCode()> _
    6. Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    7. Try
    8. If disposing AndAlso components IsNot Nothing Then
    9. components.Dispose()
    10. End If
    11. Finally
    12. MyBase.Dispose(disposing)
    13. End Try
    14. End Sub
    15. 'Wird vom Windows Form-Designer benötigt.
    16. Private components As System.ComponentModel.IContainer
    17. 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    18. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
    19. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    20. <System.Diagnostics.DebuggerStepThrough()> _
    21. Private Sub InitializeComponent()
    22. Me.SuspendLayout()
    23. '
    24. 'CtlPropertyContainer1
    25. '
    26. Me.CtlPropertyContainer1.BackColor = System.Drawing.Color.White
    27. Me.CtlPropertyContainer1.DefaultLabelWidth = 80
    28. Me.CtlPropertyContainer1.EventsEnabled = True
    29. Me.CtlPropertyContainer1.IsEnabled = True
    30. Me.CtlPropertyContainer1.IsPaint = True
    31. Me.CtlPropertyContainer1.Location = New System.Drawing.Point(6, 19)
    32. Me.CtlPropertyContainer1.MoveControls = True
    33. Me.CtlPropertyContainer1.Name = "CtlPropertyContainer1"
    34. Me.CtlPropertyContainer1.ScreenUpdate = True
    35. Me.CtlPropertyContainer1.Size = New System.Drawing.Size(145, 155)
    36. Me.CtlPropertyContainer1.TabIndex = 0
    37. '
    38. 'Form1
    39. '
    40. Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    41. Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    42. Me.ClientSize = New System.Drawing.Size(284, 262)
    43. Me.Controls.Add(Me.CtlPropertyContainer1)
    44. Me.Name = "Form1"
    45. Me.Text = "Form1"
    46. Me.ResumeLayout(False)
    47. End Sub
    48. Friend WithEvents CtlPropertyContainer1 As PropertyContainer.CtlPropertyContainer
    49. End Class


    Durch Zufall fand ich heraus: Füge ich in die Datei folgende Codezeile ein, so geht es!

    Quellcode

    1. Me.CtlPropertyContainer1 = New PropertyContainer.CtlPropertyContainer


    Nun die Frage:
    Wie kann ich dafür sorgen,
    1. dass es ohne die eben genannte Codezeile geht
    oder
    2. dass die eben genannte Codezeile autom. eingefügt wird?

    Folgend der Quellcode des Container-Controls (gekürzt, da Post sonst zu lang. Kompletter Quellcode des Containers im Anahng)

    CtlPropertyContainer.vb (nur Konstruktor)

    Quellcode

    1. ​ Public Sub New()
    2. MyBase.New()
    3. InitializeComponent()
    4. mcColLabel = New ClsColLabel()
    5. mcColPcProperty = New ClsColPcProperty
    6. mcColPcProperty.PropertyContainer = Me
    7. mbMoveControls = True
    8. mbEventsEnabled = True
    9. End Sub


    CtlPropertyContainer.Designer

    Quellcode

    1. ​<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    2. Partial Class CtlPropertyContainer
    3. Inherits System.Windows.Forms.UserControl
    4. 'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    5. <System.Diagnostics.DebuggerNonUserCode()> _
    6. Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    7. Try
    8. If disposing AndAlso components IsNot Nothing Then
    9. components.Dispose()
    10. End If
    11. Finally
    12. MyBase.Dispose(disposing)
    13. End Try
    14. End Sub
    15. 'Wird vom Windows Form-Designer benötigt.
    16. Private components As System.ComponentModel.IContainer
    17. 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    18. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
    19. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    20. <System.Diagnostics.DebuggerStepThrough()> _
    21. Private Sub InitializeComponent()
    22. Me.PictureBox1 = New System.Windows.Forms.PictureBox()
    23. Me.VScrollBar1 = New System.Windows.Forms.VScrollBar()
    24. CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
    25. Me.SuspendLayout()
    26. '
    27. 'PictureBox1
    28. '
    29. Me.PictureBox1.Location = New System.Drawing.Point(0, 0)
    30. Me.PictureBox1.Name = "PictureBox1"
    31. Me.PictureBox1.Size = New System.Drawing.Size(252, 84)
    32. Me.PictureBox1.TabIndex = 0
    33. Me.PictureBox1.TabStop = False
    34. '
    35. 'VScrollBar1
    36. '
    37. Me.VScrollBar1.Location = New System.Drawing.Point(254, 0)
    38. Me.VScrollBar1.Name = "VScrollBar1"
    39. Me.VScrollBar1.Size = New System.Drawing.Size(17, 85)
    40. Me.VScrollBar1.TabIndex = 2
    41. '
    42. 'CtlPropertyContainer
    43. '
    44. Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    45. Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    46. Me.Controls.Add(Me.VScrollBar1)
    47. Me.Controls.Add(Me.PictureBox1)
    48. Me.Name = "CtlPropertyContainer"
    49. Me.Size = New System.Drawing.Size(280, 91)
    50. CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
    51. Me.ResumeLayout(False)
    52. End Sub
    53. Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
    54. Friend WithEvents VScrollBar1 As System.Windows.Forms.VScrollBar
    55. End Class
    Dateien
    • Controls.zip

      (8,63 kB, 99 mal heruntergeladen, zuletzt: )