默认的Listbox 只能添加 只能添加一个值,我需要添加2个字符串,一个显示在左边,一个显示在右边,类似于千千静听的播放列表一样,左边显示歌曲名,右边显示时长。
写了一半就是不知道集合属性该怎么弄。
12 个解决方案
#1
百度谷歌蛮长时间,都没有这样的例子。。顶起。。。。
#2
你是不是想这个集合,在设计界面时,在属性窗口里能添加这个集合?
#3
是的,我就这样想的,具体怎么做呢,求指点
#4
设置一个只读 Get 属性的集合.
#5
你可以重写ListBox属性,然后[Browsable(false)]就行,然后可以加入自己的自定义属性
#6
具体该怎么写呢。谢谢
#7
这样中么?
public class myListBox : Control
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Localizable(true)]
[MergableProperty(false)]
public List<myItem> Items { get; set; }
}
[Serializable()]
public class myItem
{
public string LeftString { get; set; }
public string RightString { get; set; }
}
#8
我是这么干的
private List<ListItem> items;
public List<ListItem> Items
{
get
{
return items;
}
set { if (items == null)items = new List<ListItem>(); items = value; }
}
。。。。。
[Serializable()]
public class ListItem
{
public ListItem() { }
public ListItem(string songname, int songlenght)
{
this.songname = songname;
this.songlenght = songlenght;
}
private string songname;
private int songlenght;
public string SongName { get { return songname; } set { songname = value; } }
public int SongLenght { get { return songlenght; } set { songlenght = value; } }
}
#9
但是不好使啊。。属性窗口里能能添加数值,储存不了。。
#10
搞定了,谢谢个位。。。
private List<ListItem> items = new List<ListItem>();
public List<ListItem> Items
{
get
{
return items;
}
//set { if (items == null)items = new List<ListItem>(); items = value; }
}
#11
呵呵,这样就可以保存,亲测
public partial class myListBox : Control
{
private List<BsItem> items = new List<BsItem>();
[TypeConverter(typeof(System.ComponentModel.CollectionConverter))]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public List<BsItem> Items
{
get
{ return items; }
}
public myListBox() { }
}
public class BsItem
{
public string name
{ get; set; }
public string desc
{ get; set; }
}
#12
是的。我多写了一个set{}...其实我知道是多余的,只是有缓存。。刷了好几次。。纠结了很久。。刚清理下然后重新生成就OK了。
多些你们这些热心的人。。致敬!!
#1
百度谷歌蛮长时间,都没有这样的例子。。顶起。。。。
#2
你是不是想这个集合,在设计界面时,在属性窗口里能添加这个集合?
#3
是的,我就这样想的,具体怎么做呢,求指点
#4
设置一个只读 Get 属性的集合.
#5
你可以重写ListBox属性,然后[Browsable(false)]就行,然后可以加入自己的自定义属性
#6
具体该怎么写呢。谢谢
#7
这样中么?
public class myListBox : Control
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Localizable(true)]
[MergableProperty(false)]
public List<myItem> Items { get; set; }
}
[Serializable()]
public class myItem
{
public string LeftString { get; set; }
public string RightString { get; set; }
}
#8
我是这么干的
private List<ListItem> items;
public List<ListItem> Items
{
get
{
return items;
}
set { if (items == null)items = new List<ListItem>(); items = value; }
}
。。。。。
[Serializable()]
public class ListItem
{
public ListItem() { }
public ListItem(string songname, int songlenght)
{
this.songname = songname;
this.songlenght = songlenght;
}
private string songname;
private int songlenght;
public string SongName { get { return songname; } set { songname = value; } }
public int SongLenght { get { return songlenght; } set { songlenght = value; } }
}
#9
但是不好使啊。。属性窗口里能能添加数值,储存不了。。
#10
搞定了,谢谢个位。。。
private List<ListItem> items = new List<ListItem>();
public List<ListItem> Items
{
get
{
return items;
}
//set { if (items == null)items = new List<ListItem>(); items = value; }
}
#11
呵呵,这样就可以保存,亲测
public partial class myListBox : Control
{
private List<BsItem> items = new List<BsItem>();
[TypeConverter(typeof(System.ComponentModel.CollectionConverter))]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public List<BsItem> Items
{
get
{ return items; }
}
public myListBox() { }
}
public class BsItem
{
public string name
{ get; set; }
public string desc
{ get; set; }
}
#12
是的。我多写了一个set{}...其实我知道是多余的,只是有缓存。。刷了好几次。。纠结了很久。。刚清理下然后重新生成就OK了。
多些你们这些热心的人。。致敬!!