TreeView und dessen Nodes-Collection nachbilden

19/03/2008 - 09:18 von Karsten Sosna | Report spam
Hallo NG,
ein TreeView hat eine Nodes-Eigenschaft. Diese ist vom Typ
TreeNodeCollection. Letztere hat lt. .Net-Reflector einen
Friend-Constructor. Wenn ich jetzt folgendes in einer Windows-Anwendung
versuche
\\\
Dim tcol As New TreeNodeCollection(New TreeNode)
///
erhalte ich die Meldung "Der Typ "System.Windows.Forms.TreeNodeCollection"
hat keinen Konstruktor.". Soweit so gut. Nun habe ich mir eine Library
angelegt, die ein Control und eine entsprechende Collection hat. In der
Collection habe ich auch einen Friend-Constructor eingebaut. Wenn ich nun im
Control mir eine Insatnz der Collection mit New erstelle funktioniert das
auch. Wenn ich aber nun versuche eine Instanz der Collection in der
Windows-Anwendung zu erstellen geht das nicht. Bis dahin ist das auch alles
verstàndlich. Nur bei dem letzteren Versuch erhalte ich nicht die Meldung
"hat keinen Konstruktor" sondern "XRF.Controls.PickerItemCollection.Friend
Sub New(parent As XRF.Controls.Picker)" ist in diesem Kontext nicht
zugreifbar, da es "Friend" ist." Wieso?

Danke für jeden Tipp
Gruß Scotty
 

Lesen sie die antworten

#1 Elmar Boye
19/03/2008 - 11:15 | Warnen spam
Hallo Karsten,

Karsten Sosna schrieb:
Hallo NG,
ein TreeView hat eine Nodes-Eigenschaft. Diese ist vom Typ
TreeNodeCollection. Letztere hat lt. .Net-Reflector einen
Friend-Constructor. Wenn ich jetzt folgendes in einer Windows-Anwendung
versuche
\\\
Dim tcol As New TreeNodeCollection(New TreeNode)
///
erhalte ich die Meldung "Der Typ "System.Windows.Forms.TreeNodeCollection"
hat keinen Konstruktor.". Soweit so gut.



Hat sie schon, nur keinen öffentlichen.
Der einzige ist Friend Sub New(ByVal owner As TreeNode)

Nun habe ich mir eine Library
angelegt, die ein Control und eine entsprechende Collection hat. In der
Collection habe ich auch einen Friend-Constructor eingebaut. Wenn ich nun im
Control mir eine Insatnz der Collection mit New erstelle funktioniert das
auch. Wenn ich aber nun versuche eine Instanz der Collection in der
Windows-Anwendung zu erstellen geht das nicht. Bis dahin ist das auch alles
verstàndlich. Nur bei dem letzteren Versuch erhalte ich nicht die Meldung
"hat keinen Konstruktor" sondern "XRF.Controls.PickerItemCollection.Friend
Sub New(parent As XRF.Controls.Picker)" ist in diesem Kontext nicht
zugreifbar, da es "Friend" ist." Wieso?



Friend bedeutet daß nur die innerhalb der Bibliothek auf den Konstruktor
zugegriffen werden darf. Deine Anwendung, die die Bibliothek nutzt,
hat damit keinen Zugriff darauf.
Und somit entspricht das der TreeNodeCollection.

Überfragt bin ich allerdings, warum Visual Basic dafür zwei
unterschiedlichen Fehlermeldungen parat hat.

Gruß Elmar

Ähnliche fragen