Form will sich nicht zeigen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    Form will sich nicht zeigen

    Hallo Community,

    Ich habe ein Problem mit meinem Programm.
    Ich versuche ich habe einen button, wenn man auf diesen drückt wird die form2 auf hide gesetzt und
    die form3 sollte eigentlich auf show gesetzt werden doch dann kommt dieser fehler:

    Bilder:
    Spoiler anzeigen

    1.Bild


    2.Bild



    Wäre nett wen mit wer helfen könnte.
    hey,
    muss form2 auf hide gesetzt werden oder kann sie auch geschlossen werden?

    #edit

    1. hast du schonmal versucht Form3.Show() als erstes und Me.Hide() als letztes ins Event zu schreiben?
    2. hast du unter den Projekteigenschaften beim Reiter "Anwendung" den Modus für das Herunterfahren auf "Beim Schließen des letzten Formulars" gestellt?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „IP4D“ ()

    eigentlich kann ich sie auch schließen wieso?

    @ milaim wieso ne neue form die form hab ich doch schon

    Edit: es hat geklappt danke.
    aber ich würde mal gerne wissen wieso das auftritt also das ich das so machen muss weil sonst hat immer form3.Show gereicht.
    #Beitrag von oben

    1. hast du schonmal versucht Form3.Show() als erstes und Me.Hide() als letztes ins Event zu schreiben?
    2. hast du unter den Projekteigenschaften beim Reiter "Anwendung" den Modus für das Herunterfahren auf "Beim Schließen des letzten Formulars" gestellt?

    Dann müsste eig alles klappen
    Das verstehst du anscheinend nicht..
    Deine Form3 (jede Form) bildet i.d.R. eine Klasse.
    Damit eine Klasse ordnungsgemäß verwendet werden kann, muss eine *NEUE* Instanz der Klasse erstellt werden. Dafür wurde NEW in .Net reserviert.
    Wenn du keine Instanz der Form (Klasse) erstellst, kannst du nur Shared Funktionen darin verwenden, das ist aber bei einer Formklasse unmöglich.

    @IP4D: Schau dir doch seine Fehlermeldung an, bevor du Beiträge postest.
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer

    milaim schrieb:

    Wenn du keine Instanz der Form (Klasse) erstellst, kannst du nur Shared Funktionen darin verwenden, das ist aber bei einer Formklasse unmöglich.

    Das ist (leider) Quatsch. Aus historischen Gründen geht's bei Forms immer auch ohne New. Nimmt man nämlich den Namen der Klasse (zb Form1), dann wird im Hintergrund automatisch eine Instanz der Klasse erzeugt die über den Klassennamen angesprochen wird.
    Dieses Verhalten wurde EIGENTLICH bei der ersten .Net Version auf das "richtige" Verhalten geändert (keine Instanz ohne new), aber afaik in 2005 (vermutlich wegen der großen Proteste) wieder auf VB6 "default instance" geändert. VB6-ler sind halt zäh wenns um liebgewordenes geht ;)

    Form1:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Debug.Print(Form2.i)
    4. End Sub
    5. End Class


    Form2:

    VB.NET-Quellcode

    1. Public Class Form2
    2. Public i As Integer = 1
    3. End Class

    Output: 1

    Und "i" ist eine Instanzvariable und NICHT shared ...

    (wäre schön, wenn MS dieses feature mal wieder kicken würde, aber dann müssten wohl drei Millionen Programme umgeschrieben werden :(