none
MainForm plötzlich ohne Labels, Buttons usw. RRS feed

  • Allgemeine Diskussion

  • Hoi,

    ich habe heute vormittag ganz normal debugged, danach kompiliert und VBnetE normal beendet.

    Als ich es jetzt wieder aufrufe, sind auf der (MDI)MainForm keinerlei Menüs, Labels, Buttons usw. mehr zu sehen !

    Laut FormExplorer (auf der rechten Seite) sind aber alle noch vorhanden, bei z.B. einer Neuanlage mit demselben Namen kommt die Meldung, dass das Element schon existiert.

    Auch wenn ich debugge, erscheint nur die leere Form.

    Kann mir jemand sagen, was da los ist ?

    Doei

    Franz


    Be a good forum member - mark posts that contain the answers to your questions or those that are helpful

    • Typ geändert Robert Breitenhofer Dienstag, 6. November 2012 17:06 Keine Rückmeldung des Fragenstellender
    Dienstag, 30. Oktober 2012 17:44

Alle Antworten

  • Hallo, kannst du mal den Code der Form1.Designer.vb posten (Spezeil den der die Eigenschaften der Form selbst zuwweißt)? Ich nehme an das durch einen Fehler in VS solche Zeilen wie
    Me.Controls.Add(Me.Button1)

    fehlen. Somit existieren zwar die Variablen, aber man kann Sie nicht sehen, da Sie nicht zur Form hinzugefügt werden.

    Koopakiller - http://koopakiller.ko.ohost.de/

    Dienstag, 30. Oktober 2012 17:59
  • Hoi,

    das sieht soweit alles "normal" aus.

    Hier mal ein paar Auszüge:

    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial Class TestAppForm
        Inherits System.Windows.Forms.Form
    
        'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub
    
        'Wird vom Windows Form-Designer benötigt.
        Private components As System.ComponentModel.IContainer
    
        'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
        'Das Bearbeiten ist mit dem Windows Form-Designer möglich.  
        'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
            Me.components = New System.ComponentModel.Container
            Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(TestAppForm))
            Me.MenuStrip1 = New System.Windows.Forms.MenuStrip
            Me.DateiToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
            Me.NeuToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
    
    ..
    ..
    ..
    
            '
            'MenuStrip1
            '
            Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
            Me.MenuStrip1.Name = "MenuStrip1"
            Me.MenuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional
            Me.MenuStrip1.Size = New System.Drawing.Size(1020, 24)
            Me.MenuStrip1.TabIndex = 0
            Me.MenuStrip1.Text = "MenuStrip1"
            '
            'DateiToolStripMenuItem
            '
            Me.DateiToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NeuToolStripMenuItem, Me.ÖffnenToolStripMenuItem, Me.toolStripSeparator, Me.SpeichernToolStripMenuItem, Me.SpeichernunterToolStripMenuItem, Me.toolStripSeparator1, Me.DruckenToolStripMenuItem, Me.SeitenansichtToolStripMenuItem, Me.toolStripSeparator2, Me.BeendenToolStripMenuItem})
            Me.DateiToolStripMenuItem.Name = "DateiToolStripMenuItem"
            Me.DateiToolStripMenuItem.Size = New System.Drawing.Size(46, 20)
            Me.DateiToolStripMenuItem.Text = "&Datei"
    
    ..
    ..
    
            'ToolStripMenuItem1
            '
            Me.ToolStripMenuItem1.Image = Global.TestApp.My.Resources.Resources.TestApp
            Me.ToolStripMenuItem1.Name = "ToolStripMenuItem1"
            Me.ToolStripMenuItem1.Size = New System.Drawing.Size(164, 22)
            Me.ToolStripMenuItem1.Text = "TestApp"
            '
            'WindowsToolStripMenuItem
            '
            Me.WindowsToolStripMenuItem.Name = "WindowsToolStripMenuItem"
            Me.WindowsToolStripMenuItem.Size = New System.Drawing.Size(68, 20)
            Me.WindowsToolStripMenuItem.Text = "&Windows"
            '
    ..
    ..
    
            'TestAppForm
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.BackColor = System.Drawing.SystemColors.Control
            Me.ClientSize = New System.Drawing.Size(1020, 714)
            Me.Controls.Add(Me.ToolStrip1)
            Me.Controls.Add(Me.StatusStrip1)
            Me.Controls.Add(Me.MenuStrip1)
            Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
            Me.IsMdiContainer = True
            Me.MainMenuStrip = Me.MenuStrip1
            Me.Name = "TestAppForm"
            Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
            Me.Text = "                                                                                 " & _
                "                                                                              "
            Me.ContextMenuStrip1.ResumeLayout(False)
            Me.ResumeLayout(False)
            Me.PerformLayout()
    
        End Sub
    
    ..
    ..
    
      Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
        Friend WithEvents DateiToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
        Friend WithEvents NeuToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
        Friend WithEvents ÖffnenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
        Friend WithEvents toolStripSeparator As System.Windows.Forms.ToolStripSeparator
        Friend WithEvents SpeichernToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
    
    ..
    ..
        End Class
    
    

    Für mich sieht das erstmal alles gut aus....

    Doei

    Franz


    Be a good forum member - mark posts that contain the answers to your questions or those that are helpful

    Donnerstag, 1. November 2012 10:10
  • Hallo Franz,

    entscheidend ist die Methode InitializeComponent (im Folgenden InitC genannt) in TestAppForm.Designer.vb. Wahrscheinlich fehlt eine der Methodenaufrufe SuspendLayout am Anfang von InitC oder ResumeLayout bzw. PerformLayout am Ende von InitC bei einem der Kontainer (MenuStrip1, ToolStrip1, StatusStrip1 etc.). Wenn Du ein ähnlich aufgebautes Formular in einem anderen Projekt hast, kannst Du mal FormVonProjektX.Designer.vb mit TestAppForm.Designer.vb bzgl. des Aufbaus von InitC vergleichen.

    Schönen Gruß,

    LittleBlueBird

    Donnerstag, 1. November 2012 13:16
  • Hallo LittleBlueBird,

    das hatte ich schon vorher gemacht, aber nichts gefunden.

    Sowas finde ich im InitBereich...

            Me.ControlCenterToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
            Me.MenuStrip1.SuspendLayout()
            Me.ContextMenuStrip1.SuspendLayout()
            Me.SuspendLayout()
     

    und sowas weiter unten...

    Me.MenuStrip1.ResumeLayout(False) Me.MenuStrip1.PerformLayout() Me.ContextMenuStrip1.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout()
    End Sub

    Doei

    Franz


    Be a good forum member - mark posts that contain the answers to your questions or those that are helpful

    Donnerstag, 1. November 2012 14:32
  • Hallo Franz,

    nun, das war bei mir das Problem, als die ToolsTripButtons verschwunden waren. Aber mir ist aufgefallen, dass bei dir die Me.MenuStrip1.Items.AddRange-Methode fehlt. Diese sollte bei jedem Kontainer vorhanden sein, und wenn sie fehlt, musst du sie per Hand einfügen. Der Aufbau von InitC ist wie folgt: zuerst wird der jeweilige Kontainer (MenuStrip1, ToolStrip1, StatusStrip1) definiert, direkt darunter befinden sich die dazugehörigen Definitionen der einzelnen Elemente (Label, Button, usw.), in etwa wie folgt:

            '
            'StatusStrip1
            '
            resources.ApplyResources(Me.StatusStrip1, "StatusStrip1")
            Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripStatusLabel1, Me.ToolStripStatusLabel2})
            Me.StatusStrip1.Name = "StatusStrip1"
            Me.StatusStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.ManagerRenderMode
            Me.StatusStrip1.SizingGrip = False
            '
            'ToolStripStatusLabel1
            '
            Me.ToolStripStatusLabel1.Name = "ToolStripStatusLabel1"
            resources.ApplyResources(Me.ToolStripStatusLabel1, "ToolStripStatusLabel1")
            '
            'ToolStripStatusLabel2
            '
            Me.ToolStripStatusLabel2.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Left
            Me.ToolStripStatusLabel2.BorderStyle = System.Windows.Forms.Border3DStyle.Etched
            Me.ToolStripStatusLabel2.Name = "ToolStripStatusLabel2"
            resources.ApplyResources(Me.ToolStripStatusLabel2, "ToolStripStatusLabel2")

    Die Elemente musst du nun in die AddRange-Methode aufnehmen, wie oben gezeigt. Ich hoffe, dir weiter geholfen zu haben.

    Schöne Grüße,

    LittleBlueBird

    Donnerstag, 1. November 2012 16:22
  • Hoi,

    this makes no difference,

    Here is the (TestAppForm)part from the Designer:

            'TestAppForm
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            Me.BackColor = System.Drawing.SystemColors.Control
            Me.ClientSize = New System.Drawing.Size(1020, 714)
            Me.Controls.Add(Me.ToolStrip1)
            Me.Controls.Add(Me.StatusStrip1)
            Me.Controls.Add(Me.MenuStrip1)
            Me.Cursor = System.Windows.Forms.Cursors.Hand
            Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
            Me.IsMdiContainer = True
            Me.MainMenuStrip = Me.MenuStrip1
            Me.Name = "TestAppForm"
            Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
            Me.Text = "                                                                                 " & _
                "                                                                              "
            Me.MenuStrip1.ResumeLayout(False)
            Me.MenuStrip1.PerformLayout()
            Me.ContextMenuStrip1.ResumeLayout(False)
            Me.ResumeLayout(False)
            Me.PerformLayout()

    Seems to be that all is there what is needed, or ?

    Doei
    Franz


    Be a good forum member - mark posts that contain the answers to your questions or those that are helpful

    Donnerstag, 1. November 2012 19:00
  • Hallo Franz,

    du hast dich wohl mit meiner Antwort nicht auseinandergesetzt oder den Kern der Sache überlesen. Das was du vorhin gepostet hast, ist die falsche Stelle. In deiner Antwort an Koopakiller hast du einen Ausschnitt beigefügt, der im Folgenden teilweise gelistet wird:

            '
            'MenuStrip1
            '
            Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
            Me.MenuStrip1.Name = "MenuStrip1"
            Me.MenuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional
            Me.MenuStrip1.Size = New System.Drawing.Size(1020, 24)
            Me.MenuStrip1.TabIndex = 0
            Me.MenuStrip1.Text = "MenuStrip1"

    Hier vermisse ich den Aufruf der AddRange-Methode. Damit fehlt bei dir das Hauptmenü, z.B. Datei. Vor Me.MenuStrip1.Location müsste folgende Zeile stehen:

    Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DateiToolStripMenuItem, ...})

    wobei "..." durch die restlichen MenuItems ersetzt werden müssten.

    Schönen Gruß,

    LittleBlueBird

    Donnerstag, 1. November 2012 22:29
  • ****************************************************************************************************************
    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
    ****************************************************************************************************************

    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Dienstag, 6. November 2012 17:06