Announcement

Collapse
No announcement yet.

Eigene Klasse ähnlich Listbox

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Eigene Klasse ähnlich Listbox

    Hallo zusammen,

    ich suche eine Möglichkeit um eine Klasse zu erstellen ähnlich einer Listbox. Also z.B. mit Klasse.Items.Add.

    ich habe schon folgendes versucht:

    Code:
    Public Class CDTimer
        Public Class Items
            Public Sub Add(ByVal Text As String, ByVal StopTime As DateTime, ByVal _
              TimeString As String)
                Me.Text = Text
                Me.StopTime = StopTime
                Me.TimeString = TimeString
            End Sub
    End Class
    aber da bekomme ich die Fehlermeldung:

    Der Verweis auf einen nicht freigegebenen Member efordert einen Objektverweis

    und ich habe absolut keine Idee wie ich da weiterkomme.


    Danke im Voraus und

    Gruß

    Martin

  • #2
    Soll das ein grafisches Control sein oder einfach nur eine Liste? Für einfach Listen gibt es die generische List Of Klasse. Schau mal hier z.B. http://msdn.microsoft.com/de-de/libr...(v=vs.80).aspx

    Comment


    • #3
      Nein, kein Control.Das mit der List Of Klasse ist ein guter Tip, aber mir geht es um das (verschachteln???) der Klassen. Ich kenne den Fachausdruck nicht. Ich möchte eine Klasse haben, mit der ich mit CDtimer.Item.Add Elemente hinzufügen kann, und z.B. mit remove wieder elemente löschen kann. Eben so ähnlich wie mit einer Listbox.

      Comment


      • #4
        Wie wäre es hiermit:

        [highlight=vb]Public Class CDTimer
        Dim CDTimerList As New List(Of CDTimerItems)

        Public Class CDTimerItems
        Dim Text As String
        Dim StopTime As DateTime
        Dim TimeString As String

        Public Sub New(ByVal Text As String, ByVal StopTime As DateTime, ByVal TimeString As String)
        Me.Text = Text
        Me.StopTime = StopTime
        Me.TimeString = TimeString
        End Sub
        End Class

        Public Sub AddCDTimerItems()
        CDTimerList.Add(New CDTimerItems("text 1", Now, "text 1"))
        CDTimerList.Add(New CDTimerItems("text 2", Now.AddHours(1), "text 2"))
        End Sub
        End Class
        [/highlight]

        Zum löschen musst du dir entweder einen Index definieren oder sonst eine eindeutige Zuordnung (z.B. Text) und in einer Schleife durch alle Elemente der Liste gehen. Alternativ kannst du auch das Dictionary(Of TKey, TValue) oder SortedList(Of TKey, TValue) nehmen.

        Grundsätzlich muss die Methode "Add" zur Klasse der Liste (also CDTimer
        ) gehören, nicht zur Klasse Elemente(Item), es sei denn du definierst für die Items ein Parent-Objekt welches wiederum auf die Liste referenziert. Das ist aber recht umständlich und vermutlich unnötig.

        Gruss

        Comment


        • #5
          Dann nimmst Du einfach eine neue Klasse und machst darin ein Property vom Typ List of <deineKlasse>

          In C# so:

          [highlight=c#]
          public class MeineKlasse
          {
          private List<String> _meineListe = new List<String>();
          public List<String> MeineListe { get { return _meineListe; } }
          }
          [/highlight]

          Das sieht dann genauso aus wie Dus haben willst. Es gibt übrigens auch Konverter im Internet die C# nach VB.NET wandeln und anders herum.

          Comment


          • #6
            Re: Eigene Klasse ähnlich Listbox

            genau das habe ich gesucht.. Danke @ll

            Gruß

            Martin

            Comment

            Working...
            X