none
一个关于ListView的问题 RRS feed

  • 問題

  • 小人正在做个MP3播放器 用的是windows media player 这个组件 在添加音乐时 我做的是可以一次添加多个音乐文件, 用for循环遍历 添加到listview中
    但是播放时就出了问题 ... 当我点 第一首歌 时,播放的是 第二首歌 ,当我点最后一首歌时 ,告诉我数组越界了 ... 我真心想不出来怎么调了 ... 希望大神帮帮我 谢谢大神了!代码如下

    private void 添加文件ToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                OpenFileDialog OFD = new OpenFileDialog();
                try
                {
                    OFD.Multiselect = true;//多选
                    if (OFD.ShowDialog() == DialogResult.OK)
                    {
                        string[] filePath = OFD.FileNames;  //获取音乐完整文件路径
                        ListViewItem lvi = new ListViewItem();
                        for (int i = 0; i < filePath.Length; i++)
                        {
                            lvi.Tag = filePath[i];
                            string filename = Path.GetFileName(filePath[i]);
                            string fileType = filename.Substring(filename.LastIndexOf('.') + 1);
                            if (fileType == "mp3" || fileType == "wav")
                            {
                                lvi = new ListViewItem(filename);
                                listView1.Items.Add(lvi);//在listview中添加文件名
                            }
                            else
                            {
                                MessageBox.Show("文件格式错误,请添加音频文件!");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

    protected void PlayMusic()
            {
                if (listView1.SelectedItems.Count > 0)
                {
                    Mp3Player.URL = listView1.SelectedItems[0].Tag.ToString();
                    //MessageBox.Show(listView1.SelectedItems[0].Tag.ToString());
                    Mp3Player.Ctlcontrols.play();
                }

    • 已移動 Ionut Duma 2013年3月1日 下午 03:57 Chinese Question
    2013年2月6日 上午 02:02

所有回覆

  • Hello emerson998,

    Thank you for you question but this is a German speaking forum so please post your questions in German, if you are looking for the Chinese forums you can find them here http://social.msdn.microsoft.com/Forums/zh-TW/categories

    Thank you and have a nice day,

    Ionut

    2013年2月6日 上午 08:42
  • 您好,
    因為您加入Tag的時機點不對哦! 在加入listView1.Items.Add(lvi) 前去設定Tag應該就可以了!

    OpenFileDialog OFD = new OpenFileDialog();
    try
    {
    	OFD.Multiselect = true;//多选
    	if (OFD.ShowDialog() == DialogResult.OK)
    	{
    		string[] filePath = OFD.FileNames;  //获取音乐完整文件路径
    		//ListViewItem lvi = new ListViewItem();
    		for (int i = 0; i < filePath.Length; i++)
    		{
    			//lvi.Tag = filePath[i];
    			string filename = Path.GetFileName(filePath[i]);
    			string fileType = filename.Substring(filename.LastIndexOf('.') + 1);
    			if (fileType == "mp3" || fileType == "wav")
    			{
    				ListViewItem lvi = new ListViewItem(filename);
    				lvi.Tag = filePath[i];
    				listView1.Items.Add(lvi);//在listview中添加文件名
    			}
    			else
    			{
    				MessageBox.Show("文件格式错误,请添加音频文件!");
    			}
    		}
    	}
    }
    catch (Exception ex)
    {
    	MessageBox.Show(ex.Message);
    }


    blog: http://www.dotblogs.com.tw/rainmaker/

    • 已提議為解答 Alex_Lee 2013年5月20日 上午 01:23
    2013年5月15日 上午 02:53
  • 您好

    請在 new ListViewItem 後,再將 Tag 值賦予,或是參考以下寫法:

                OpenFileDialog OFD = new OpenFileDialog();
                try
                {
                    OFD.Multiselect = true;//多选
                    if (OFD.ShowDialog() == DialogResult.OK)
                    {
                        string[] filePath = OFD.FileNames;  //获取音乐完整文件路径
                        for (int i = 0; i < filePath.Length; i++)
                        {
                            string filename = Path.GetFileName(filePath[i]);
                            string fileType = filename.Substring(filename.LastIndexOf('.') + 1);
                            if (fileType == "mp3" || fileType == "wav")
                            {
                                listView1.Items.Add(new ListViewItem{Text = filename,Tag=filePath[i]});//在listview中添加文件名
                            }
                            else
                            {
                                MessageBox.Show("文件格式错误,请添加音频文件!");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }



    歡迎參觀我的Blog【菜鳥自救會】

    • 已提議為解答 Alex_Lee 2013年5月20日 上午 01:24
    2013年5月15日 下午 12:13
    版主