当我将项添加到CheckedListBox列表框时,我还想存储对另一个对象的引用。我尝试将此对象的新实例添加到CheckedListBox。
public class CheckedListBoxExtention : CheckedListBox
{
private ReferenceItem _referenceItem;
public ReferenceItem storedItem
{
get { return _referenceItem; }
set { _referenceItem = value; }
}
public CheckedListBoxExtention(ReferenceItem storedItem)
{
_referenceItem = storedItem;
}
}
这可以在以后当我使用CheckedListBox中的项目时,我有一个对_referenceItem对象的引用。但是,当我添加这样的项目时,CheckedListBox显示为空白(GUI本身中的列表)。所以我试图找到一种方法来覆盖项目文本或类似的东西。
这是我用来解决问题的代码
class ReferenceItemWrapper
{
private ReferenceItem _item;
public ReferenceItemWrapper(ReferenceItem item)
{
_item = item;
}
public ReferenceItem getItem
{get {return _item;}}
public override string ToString()
{
return _item.ToString();
}
}
我对包装器有点新意。当我将ReferenceItem直接添加到CheckedListBox时,为什么它在包装后无法正常工作?
答案 0 :(得分:4)
CheckedListBox使用列表中对象的ToString方法填充框中的标题。不要扩展CheckedListBox,只需创建一个包装类,它允许您存储引用和标题,并实现一个返回标题的ToString方法。只需创建一个包装器对象,将文本粘贴在其中,将引用粘贴在其中,然后将包装器对象添加到列表框中。