日期:2014-05-19  浏览次数:21242 次

一个ListBox的Items显示问题
现有一长度为2的数组string[]   Music,和一个ListBox控件
我要将Music[0]的值做为ListBox中的Item名字(音乐名)给显示出来
Music[1]的值做为该Item的一个“属性”(音乐地址)。
例如:ListBox中有一Item名为“吻别”,双击它之后响应事件函数,在事件函数中读取这个Item的Music[1]“属性”值,这个值是“吻别”的路径。

我的问题是,在添加项目时,如果用ListBox.Items.Add(Music),则ListBox显示的都是String[]   Array,但可以音乐播放,因为该Item有Music[1]。
如果用AddRang(Music),那么“吻别”和路径都会以string的类型被显示出来,那么在事件响应函数中读取的时候就会发生类型不一致string[]   to   string的问题。当然路径也不该被显示出来。

请问有没有什么解决方案可以达到我的目的呢?

------解决方案--------------------
应该把名字和链接拆开,一个string[] names放名字,另外一个string[] urls放链接
两个数组是对应的
把names显示在listbox上面
private void lbPlayList_DoubleClick(object sender, EventArgs e)
{
int index = lbPlayList.SelectedIndex;
axWindowsMediaPlayer1.URL = urls[index];
}
------解决方案--------------------
自己写一个2个成员的类不就得了吗~~~~楼主还是用vb的思想在用.net~~~

class SongFile{
public string Name;
public string Path;
public SongFile(string Name,string Path){
Name=name;
Path=path;
}
public override string ToString(){
return Name;
}
}
//----------------
SongFile sf=new SongFile( "吻别 ",@ "C:\吻别.mp3 ");
listbox1.Items.Add(sf)
------解决方案--------------------
private string _name;
private string _No;
public string Name{
get{return _name;}}
set{_name=value;}
public string No{
get{return _No;}
set{_No=value;}
}
------解决方案--------------------
private string [] Music = { "aa.mp3 ", "bb.mp3 "};
listBox1.DataSource = Music;