Benutzer mit den meisten Antworten
List (of Link) gibt keine Konstrjuktoren zur auswahl

Frage
-
Ich entwickle ein Steuerelement (Forms) mit .Net 3.5 und Windows 7 und VS2010 (VB) und habe Folgendes Problem: Ich habe die Klasse Link erstellt und eine Liste List(Of Link). Von dieser Klasse werden zwei Klassen abgeleitet. Das Problem ist, daß man wenn man Mit der Methode Add der Listenklasse einen Link hinzufügen will, keine Konstruktoren erscheinen sondern nur Add(Item as Blockedit.List). Was habe ich an der Erstellung der Klasse falsch gemacht?
Public Class Link Friend Nam As String Friend IdNr As Integer Friend Thickn As Integer Friend FrThickn As Integer Friend Framed As Boolean Friend FrColor As Color Friend FillColr As Color Friend Prnt As Link Friend Ctrl As Control Sub New() Nam = "" Thickn = 1 FrThickn = 1 Framed = False FrColor = Color.Black FillColor = Color.Black End Sub Sub New(Name As String, Id As Integer, Thickn As Short) Me.Name = Name IdNr = Id Me.Thickn = Thickn End Sub Public Property Name As String Get Return Nam End Get Set(value As String) Nam = value End Set End Property Public Property Id Get Return IdNr End Get Set(value) IdNr = value End Set End Property Public Property Parent As Object Get If Ctrl IsNot Nothing Then Return Ctrl Else Return Prnt End If End Get Set(value As Object) If value.GetType.ToString = "StdLink" Or value.GetType.ToString = "ComplexLink" Then Ctrl = value Else Prnt = value End If Prnt = value End Set End Property Public Property Thickness As Integer Get Return Thickn End Get Set(value As Integer) Thickn = value End Set End Property Public Property FrameThickness As Integer Get Return FrThickn End Get Set(value As Integer) FrThickn = value End Set End Property Public Property FrameColor As Color Get Return FrColor End Get Set(value As Color) FrColor = value End Set End Property Public Property FillColor As Color Get Return FillColr End Get Set(value As Color) FillColr = value End Set End Property Public Overridable Sub Draw(E As Graphics) End Sub Public Overridable Sub DrawFramed(E As Graphics) End Sub Public Overridable Function IsPointInLink(Pt As Point) As Boolean Return False End Function Public Overridable Sub DrawLinkAchors(e As Graphics) End Sub Public Overridable Function ClickedLinkAnchor(Pt As Point) As Integer Return 0 End Function Public Overridable Sub BlockToXml(Elem As XElement) End Sub Public Overridable Sub BlockFromXml(Elem As XElement) End Sub End Class Public Class LinkTest Dim Links As List(Of Link) Sub New() ' Links.Add("Test", 1, 1) Listenbefehl akzeptiert keine Konstruktoren End Sub End Class
Markus Lein Hochstadenstr 6 50674 Köln (Cologne) Germany
Antworten
-
Hallo Markus,
entweder habe ich dein Problem nicht verstanden oder Du hast etwas vergessen.
Wo soll denn die Überladung mit der Übergabe der einzelnen Eigenschaften herkommen?
Links.Add( New Link( "Test", 1, 1 ) )
funktioniert doch. Aber damit Du einen Konstruktor verwendest, musst Du das dann auch richtig schreiben.
BTW: Damit das funktioniert, musst Du die Instanz der List( Of Link ) auch erstellen. Also anstelle von:
Dim Links As List(Of Link)
schreibst Du dann:
Dim Links As New List( Of Link )
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 14. August 2012 11:56
- Als Antwort markiert Markus1961 Montag, 3. September 2012 09:39
-
Bei der Gelegenheit sei angemerkt, dass die ganzen internen Variablen (die du als Property nach außen weitergibst), also "Nam" und "IdNr" usw., besser als Private deklariert werden sollten, um Verwirrungen und Fehler zu vermeiden.
Um von außen darauf zuzugreifen, reicht der Name des Property ja völlig aus.
LG, Dennis.
- Als Antwort markiert Markus1961 Montag, 3. September 2012 09:39
Alle Antworten
-
Hallo Markus,
entweder habe ich dein Problem nicht verstanden oder Du hast etwas vergessen.
Wo soll denn die Überladung mit der Übergabe der einzelnen Eigenschaften herkommen?
Links.Add( New Link( "Test", 1, 1 ) )
funktioniert doch. Aber damit Du einen Konstruktor verwendest, musst Du das dann auch richtig schreiben.
BTW: Damit das funktioniert, musst Du die Instanz der List( Of Link ) auch erstellen. Also anstelle von:
Dim Links As List(Of Link)
schreibst Du dann:
Dim Links As New List( Of Link )
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Dienstag, 14. August 2012 11:56
- Als Antwort markiert Markus1961 Montag, 3. September 2012 09:39
-
Bei der Gelegenheit sei angemerkt, dass die ganzen internen Variablen (die du als Property nach außen weitergibst), also "Nam" und "IdNr" usw., besser als Private deklariert werden sollten, um Verwirrungen und Fehler zu vermeiden.
Um von außen darauf zuzugreifen, reicht der Name des Property ja völlig aus.
LG, Dennis.
- Als Antwort markiert Markus1961 Montag, 3. September 2012 09:39