vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Invalid Operation Ecxeption bei Form-Instanziierung 
Autor: Preisser
Datum: 10.02.12 16:02

Hallo,

ich fürchte, ohne genauen Code kann man da nicht viel sagen. Wenn du dir allerdings sicher bist, dass du in deiner Hauptform nicht auf sie selbst referenzierst, würde ich raten, dass du in einer der anderen Forms im Konstruktor auf die Defaultinstanz der Hauptform verweist. Wenn nun die Defaultinstanz der Hauptform erzeugt wird, erstellt diese im Konstruktor neue Instanzen der anderen Forms, und wenn diese wiederrum im Konstruktor auf die Hauptform verweisen, würde das zu der Exception führen.

Hier mal ein Beispiel mit einer Hauptform und einer Unterform, wobei die Hauptform als Defaultinstanz verwendet wird und wo es dann zur InvalidOperationException kommt:
Option Strict On
Public Class Hauptform
 
    Private myUnterform As New Unterform() ' Hier wird die Unterform instanziert
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
      Handles Button1.Click
        myUnterform.Show() 'Klick auf Button zeigt die Unterform an
    End Sub
 
End Class
Option Strict On
Public Class Unterform
 
    Private myHauptform As Hauptform = Hauptform 'Zugriff auf Default-Instanz 
    ' erzeugt die Exception
 
End Class
Da in der Unterform im Konstruktor auf die Hauptform zugregriffen wird, während noch der Konstruktor der Hauptform ausgeführt wird, führt dies zu der InvalidOperationException.

Wenn du in den Unterforms auf die Hauptform zugreifen willst, solltest du den Unterforms im Konstruktor eine Referenz auf die Hauptform mitgeben:
Option Strict On
Public Class Hauptform
 
    Private myUnterform As New Unterform(Me) ' Hier wird die Unterform 
    ' instanziert und eine Referenz auf die Hauptform übergeben
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
      Handles Button1.Click
        myUnterform.Show()
    End Sub
End Class
Public Class Unterform
 
    Private myHauptform As Hauptform
 
    Public Sub New(myHauptform As Hauptform)
        InitializeComponent()
 
        Me.myHauptform = myHauptform
    End Sub
End Class
Zitat:

Ich hatte dann versucht, die ganzen Instanziierungen in die Load-Prozedur des Hauptfensters zu packen. Wenn ich das aber mache, dann sagt VS sobald ich in einer anderen Prozedur das Form aufrufen will, dass die Variable nicht zugreifbar sei, da sie Private für die Load-Methode ist. Klar ist, sie ja auch, aber das kann ich nicht ändern, denn Public kann man laut VS innerhalb einer Methode nicht benutzen.

Das verstehe ich jetzt nicht ganz. Auf Variablen, die innerhalb der Form global deklariert wurden (Public, Private, Protected, Friend oder Protected Friend) kann von jeder Sub innerhalb der Form zugegriffen werden, also auch vom Form_Load-Ereignis:
Option Strict On
Public Class Hauptform
 
    Private myUnterform As Unterform
 
    Private Sub Hauptform_Load(sender As System.Object, e As System.EventArgs) _
      Handles MyBase.Load
        myUnterform = New Unterform(Me) ' Hier wird die Unterform instanziert
    End Sub
End Class


Beitrag wurde zuletzt am 10.02.12 um 16:06:15 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Invalid Operation Ecxeption bei Form-Instanziierung1.937Novatlan10.02.12 14:19
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.388Preisser10.02.12 15:26
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.300Novatlan10.02.12 15:46
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.356Preisser10.02.12 16:02
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.316ModeratorFZelle10.02.12 17:52
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.370Novatlan10.02.12 20:34
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.312Manfred X10.02.12 20:43
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.333Novatlan10.02.12 20:48
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.353Manfred X10.02.12 20:51
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.304keco11.02.12 11:02
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.307Novatlan10.02.12 20:54
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.340Manfred X10.02.12 21:00
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.299Novatlan10.02.12 21:01
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.341Manfred X10.02.12 21:16
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.323Novatlan10.02.12 21:18
Re: Invalid Operation Ecxeption bei Form-Instanziierung1.355Novatlan11.02.12 11:20

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel