Forums Neueste Beiträge
 

Name einer Userconrol-Instanz in der Laufzeit ermitteln!

28/10/2008 - 15:26 von nullstring | Report spam
Hallo allerseits,
ich habe ein Problem:
Ich möchte bei einem Usercontrol (über den jeweigen Parent
rauskriegen), wo ich mich gerade befinde.

Beispiel:
Nehmen wir an, ich habe eine Form namens "testForm1".
Da drin habe ich ein Usercontrol (vom Typ CTRL), welches "testControl"
heißt"
Da drin habe ich wiederum ein Usercontrol (vom Typ SUBCTRL), welches
testSubControl" heißt.
(Das kann auch so weiter gehen, muss aber nicht!)

Und jetzt möchte ich, wenn in "testSubControl" die Value-Property-
gesetzt wird (Let) herrausfinden, wo ich mich gerade befinde.
Dh ich möchte zb einen String erstellen, der so aussieht:
"testForm1->testControl->testSubControl"

Anderes Beispiel:
Wenn jetzt zb eine Form namens "testForm2" hab und da drin nur das
"testControl", dann soll der String so aussehen:
"testForm2->testControl"

Anderes Beispiel:
Wenn jetzt zb eine Form namens "testForm3" hab und da drin nur das
"testSubControl", dann soll der String so aussehen:
"testForm3->testSubControl"

Das Problem ist, dass ich "IN" einem UserControl meinen eigegenen
Namen nicht herrausfinde.
In der Property Usercontrol.Name steht dann zb nur "CTRL" und nicht
"testControl".
Also das hier:
Public Property Get Name() As String
Name = UserControl.Name 'Gibt den Typ des Controls zurück und
nicht den Namen der Instanz
End Property

Und Me.Name kann ich ja nicht ausführen, weil das eine Enlosschleife
ist!?!
Das hier:
Public Property Get Name() As String
Name = Me.Name 'ruft hier wieder die Get-Property Name auf und der
dann wieder und wieder
End Property
geht also auch nicht.

Ich dachte jetzt, dass das dann rekursiv über den Parent rauskriegen
kann, aber irgendwie krieg ich das nicht auf die Reihe! VB hat halt n
doofes Typ-System:|
Hat mir jemand einen Rat?


Danke im vorraus,
Leerstring
 

Lesen sie die antworten

#1 nullstring
29/10/2008 - 10:44 | Warnen spam
On 28 Okt., 15:26, nullstring wrote:
Hallo allerseits,
ich habe ein Problem:
Ich möchte bei einem Usercontrol (über den jeweigen Parent
rauskriegen), wo ich mich gerade befinde.

Beispiel:
Nehmen wir an, ich habe eine Form namens "testForm1".
Da drin habe ich ein Usercontrol (vom Typ CTRL), welches "testControl"
heißt"
Da drin habe ich wiederum ein Usercontrol (vom Typ SUBCTRL), welches
testSubControl" heißt.
(Das kann auch so weiter gehen, muss aber nicht!)

Und jetzt möchte ich, wenn in "testSubControl" die Value-Property-
gesetzt wird (Let) herrausfinden, wo ich mich gerade befinde.
Dh ich möchte zb einen String erstellen, der so aussieht:
 "testForm1->testControl->testSubControl"

Anderes Beispiel:
Wenn jetzt zb eine Form namens "testForm2" hab und da drin nur das
"testControl", dann soll der String so aussehen:
"testForm2->testControl"

Anderes Beispiel:
Wenn jetzt zb eine Form namens "testForm3" hab und da drin nur das
"testSubControl", dann soll der String so aussehen:
"testForm3->testSubControl"

Das Problem ist, dass ich "IN" einem UserControl meinen eigegenen
Namen nicht herrausfinde.
In der Property Usercontrol.Name steht dann zb nur "CTRL" und nicht
"testControl".
Also das hier:
Public Property Get Name() As String
    Name = UserControl.Name 'Gibt den Typ des Controls zurück und
nicht den Namen der Instanz
End Property

Und Me.Name kann ich ja nicht ausführen, weil das eine Enlosschleife
ist!?!
Das hier:
Public Property Get Name() As String
    Name = Me.Name 'ruft hier wieder die Get-Property Name auf und der
dann wieder und wieder
End Property
geht also auch nicht.

Ich dachte jetzt, dass das dann rekursiv über den Parent rauskriegen
kann, aber irgendwie krieg ich das nicht auf die Reihe! VB hat halt n
doofes Typ-System:|
Hat mir jemand einen Rat?

Danke im vorraus,
Leerstring




Heureka!
Jetzt hab ich es endlich gebacken bekommen!
Das Problem ist einfach, dass die Proberty Name umgangen werden muss!
Im Überwachungsfenster stand das auch immer richtig drine, das war
auch echt komisch!!
Aber einfach dadurch, dass ich die Property Name überschrieben habe,
kam da halt was anderes raus!
Jetzt mache ich es so:

Public Property Get Bezeichner() As String
Bezeichner = UserControl.Extender.Name
End Property


yeah:)

Ähnliche fragen