CheckedListBox に項目のタグはありますか? それとも似たようなもの?表示しているアイテムに関連付けられた ID を保存できるようにしたいと考えています。
4916 次
3 に答える
7
Tag プロパティは必要ありません。コントロールは任意のオブジェクトを受け入れます。つまり、文字列だけを入れる必要はありません。ToString()
文字列 (およびオーバーライドされた) と必要なその他のデータ メンバーを持つクラスを作成します。
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
(オーバーライドToString()
によって、ボックスに表示される内容が決まります。)
于 2010-02-13T04:37:09.217 に答える
2
CheckedListBox から独自のコントロールを継承してプロパティを作成できます。C# では次のようになります。残りの機能は継承されたままなので、追加のコードは必要ありません。
public class MyCheckedListbox : System.Windows.Forms.CheckedListBox{ プライベート オブジェクト thisObj; 公開オブジェクトタグ{ get { return this.thisObj; } 設定{ this.thisObj = 値; } } }
編集:すべての人の利益のためにVB.NETバージョンも含めることにしました...
Public Class MyCheckedListBox Inherit System.Windows.Forms.CheckedListBox thisObj をオブジェクトとして非公開にする オブジェクトとしてのパブリック プロパティ タグ 得る タグ = thisObj エンドゲット 設定 (オブジェクトとしての objParam) thisObj = objParam エンドセット End プロパティ クラス終了
もちろん、これはプレーンでボクシングを使用していますが、うまく機能します...
お役に立てれば
于 2010-02-04T23:16:48.247 に答える
0
tommieb75 回答の 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
www.developerfusion.com/tools のトランスレータを使用しています
于 2010-02-04T23:40:01.433 に答える