Member erfordert einen Objektverweis

05/05/2010 - 08:16 von Johann | Report spam
Hallo,

im OOP bin ich noch nicht ganz zu Hause und habe folgendes Problem:

Ich habe
MDI frmMain mit frmChild1, frmChil2, frmChild3, …
und einem Treeview mit Sprung zu frmChild1, frmChild2, …

1.frmMain hat Menupunkt Feld Setzen mit einer
Sub mnuFeldSetzen_Click()
frmChild1.txtArtikelnummer.text=“123“
end Sub

In dem Moment wird für frmChaild1 den Konstruktor New() aufgerufen und
danach das Statement frmChild1.txtArtikelnummer.text=“123“ ausgeführt.

Debugger Stoppt auf der Stelle und im Direktfenster frage ich:

?frmChild1.txtArtikelnummer.Text
Die Antwort:
Der Verweis auf einen nicht freigegebenen Member erfordert einen
Objektverweis.

Das Debuggen wird beendet und die Ausführung làuft weriter.

Danach ist das Feld nicht auf „123“ gesetzt d.h.
Das Feld frmChild1.txtArtikelnummer.Text ist leer.


2.Das Funktioniert ohne Probleme wenn ein Button1 auf der frmChaild1
platziert ist
Sub Button1_Click()
frmChild1.txtArtikelnummer.text=“123“
end Sub

Frage:
a. Was mache ich falsch?
Der Verweis auf einen nicht freigegebenen Member erfordert einen
Objektverweis
b. Warum kann ich nicht aus der frmMain das Feld in frmChild auf einen Wert
setzten.



Im Internet kann man nachlesen:
http://msdn.microsoft.com/de-de/library/zwwhc0d0(VS.80).aspx
So beheben Sie diesen Fehler
A. Deklarieren Sie die Instanz als Objektvariable.
B. Verweisen Sie über den Variablennamen auf die Instanz.

frmChild1 ist doch eine Objektvariable (Konstruktor hat die Instanz erstellt)

Danke

Johann
 

Lesen sie die antworten

#1 Karsten Sosna
05/05/2010 - 08:42 | Warnen spam
"Johann" schrieb im Newsbeitrag
news:
^^^^^^^^^^^^^
Hier sollte der volle Name(Vor- und Zuname) stehen.

In dem Moment wird für frmChaild1 den Konstruktor New() aufgerufen und
danach das Statement frmChild1.txtArtikelnummer.text=“123“ ausgeführt.

Debugger Stoppt auf der Stelle und im Direktfenster frage ich:

?frmChild1.txtArtikelnummer.Text
Die Antwort:
Der Verweis auf einen nicht freigegebenen Member erfordert einen
Objektverweis.



Ich befürchte mal Du hast 4 Formulare in Deinem Projekt(frmMain, frmChild1,
frmChild2, frmChild3).
Das sind aber nur Klassen und keine Instanzen von Objekten. Du musst also
erst Instanzen erstellen um auf deren Member zugreifen zu können.
Beispiel mit 2 Formularen in einem Projekt(FRM_Main und FRM_Child1) Benenne
die Formulare mal wirklich so, damit Du den Unterschied erkennen kannst.
Nun positionierst Du ein Button("Button1") auf das FRM_Main und eine
TextBox("TextBox1") auf dem FRM_Child1.
\\\
Public Class FRM_Main

Friend WithEvents frmChild1 As New FRM_Child1
///

Damit erstellst Du eine Instanz der Klasse FRM_Child1, nun kannst Du mit
\\\
Private Sub Button1_Click(
frmChild1.TextBox1.Text ="123"
frmChild1.ShowDialog()
End Sub
///
auf die TextBox1 zugreifen. Wie Du siehst wird im weiteren Code immer die
Objektvariable(frmChild1) genutzt und nicht die Klasse(FRM_Child1). Die
Klasse hat nàmlich keinen freigegebenen Member "TextBox1", deswegen bekommst
Du den Fehler.
Gruß Scotty

Ähnliche fragen