4 Stimmen

VB.NET CheckedListBox Tag?

Gibt es ein Tag für ein Element in der CheckedListBox? Oder etwas Ähnliches? Ich möchte in der Lage sein, zu speichern und ID mit dem Element, das ich anzeige verbunden.

0 Stimmen

Ist dies für Windows Forms, WPF, Silverlight, oder ASP.NET Web Forms? (Es ist fast lustig, es gibt so viele Möglichkeiten in diesen Tagen, aber ich muss fragen).

7voto

OwenP Punkte 24128

Sie brauchen keine Tag-Eigenschaft. Das Steuerelement akzeptiert jedes Objekt, d.h. Sie müssen nicht nur Strings eingeben. Erstellen Sie eine Klasse, die eine Zeichenkette hat (und überschriebenes ToString() ) und alle anderen Datenelemente, die Sie benötigen.

Public Class Form1

    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        MyBase.OnLoad(e)

        CheckedListBox1.Items.Add(New MyListBoxItem() With {.Name = "One", .ExtraData = "extra 1"})
        CheckedListBox1.Items.Add(New MyListBoxItem() With {.Name = "Two", .ExtraData = "extra 2"})
    End Sub

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        For Each obj As Object In CheckedListBox1.CheckedItems
            Dim item As MyListBoxItem = CType(obj, MyListBoxItem)
            MessageBox.Show(String.Format("{0}/{1} is checked.", item.Name, item.ExtraData))
        Next
    End Sub
End Class

Public Class MyListBoxItem
    Private _name As String
    Private _extraData As String

    Public Property Name As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property ExtraData As String
        Get
            Return _extraData
        End Get
        Set(ByVal value As String)
            _extraData = value
        End Set
    End Property

    Public Overrides Function ToString() As String
        Return Name
    End Function

End Class

(Der überschriebene ToString() bestimmt, was in der Box angezeigt wird).

2voto

t0mm13b Punkte 33393

Sie können Ihr eigenes Steuerelement von CheckedListBox erben und eine Eigenschaft erstellen. In C# würde das so aussehen, der Rest der Funktionalität bleibt derselbe, wie er geerbt wird, so dass kein weiterer zusätzlicher Code erforderlich ist:

public class MyCheckedListbox : System.Windows.Forms.CheckedListBox{
    private object thisObj;
    public object Tag{
       get{ return this.thisObj; }
       set{ this.thisObj = value; }
    }
}

Editar: Ich habe mich entschlossen, auch die VB.NET-Version einzubeziehen, damit alle davon profitieren...

Public Class MyCheckedListBox Inherits System.Windows.Forms.CheckedListBox
    Private thisObj As Object
    Public Property Tag As Object
      Get
        Tag = thisObj
      End Get
      Set (objParam As Object)
        thisObj = objParam
      End Set
    End Property
End Class

Natürlich ist dies einfach und verwendet Boxen, aber es funktioniert gut...

Ich hoffe, das hilft

0voto

kevinw Punkte 1938

Übersetzung der Antwort von tommieb75 in VB.NET:

Public Class MyCheckedListbox 
    Inherits System.Windows.Forms.CheckedListBox 
    Private thisObj As Object 
    Public Property Tag() As Object 
        Get 
            Return Me.thisObj 
        End Get 
        Set(ByVal value As Object) 
            Me.thisObj = value 
        End Set 
    End Property 
End Class

Ich benutze den Übersetzer auf www.developerfusion.com/tools

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X