C#初学者小问题之十一——关于音乐播放器的问题

genius_tong 2009-03-02 09:39:26
各位大虾们:
想写一个音乐播放器,主要思路是用WMPLib.WindowsMediaPlayer的实例来播放歌曲,用一个listview来显示播放列表,现在遇到几个问题,希望各位帮帮忙:

1.listview的MultiSelect属性设为true,当播放某一首歌时,用“this.listview1.Items[listview1.seletItems[0].Index].checked = true;”来使listview中的这首歌曲处于选定状态(就是说像用鼠标点击了一样,显示为蓝色),但是,当播放结束时,给这个item的checked属性赋值为false,用调试状态运行时它的checked属性也确实是false,但在列表的画面中它仍处于选定状态(仍为蓝色),这是为什么???

2.若要实现以下功能:当右击列表时,若有歌曲选中显示一个contextMenuStrip,若没有歌曲选中(也就是说单击的是列表的空白处)显示另一个contextMenuStrip,各位有什么好的实现办法吗??

3.如何添加一个进度条,显示一首歌播放的进度??

4.如何添加一个控制音量的东西??
...全文
895 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsmlbl 2010-12-17
  • 打赏
  • 举报
回复
过来看看,刚学习c#,感觉比较好!
chenchao0907 2010-12-17
  • 打赏
  • 举报
回复
这是我的代码..怎么改成可以歌曲循环播放??
sing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace WindowsApplication3
{
public partial class Form1 : Form
{
int count = 1;





string file1 = "E:\\音乐\\够爱.mp3";
string file2 = "E:\\音乐\\海派甜心 - 爱不单行.mp3";
string file3 = "E:\\音乐\\六哲 - 被伤过的心还可以爱谁.mp3";
string file4 = "E:\\音乐\\慕容晓晓 - 爱情买卖.mp3";


public Form1()
{
InitializeComponent();
}


private void Form1_Load(object sender, EventArgs e)
{
axWindowsMediaPlayer1.settings.setMode("loop", true); //当前歌曲的循环


axWindowsMediaPlayer1.URL = file1;
this.Text = file1.Substring(file1.LastIndexOf("\\") + 1) + "--" + this.Text;
}

private void button1_Click(object sender, EventArgs e)
{
if (count == 1)
count = 4;
else
count--;
this.Text = "MediaPlayer";
switch (count)
{
case 1:
{
axWindowsMediaPlayer1.URL = file1;
this.Text = file1.Substring(file1.LastIndexOf("\\") + 1) + "--" + this.Text;
break;
}
case 2:
{
axWindowsMediaPlayer1.URL = file2;
this.Text = file2.Substring(file2.LastIndexOf("\\") + 1) + "--" + this.Text;
break;
}
case 3:
{
axWindowsMediaPlayer1.URL = file3;
this.Text = file3.Substring(file3.LastIndexOf("\\") + 1) + "--" + this.Text;
break;
}
case 4:
{
axWindowsMediaPlayer1.URL = file4;
this.Text = file4.Substring(file4.LastIndexOf("\\") + 1) + "--" + this.Text;
break;
}
}
}

private void button2_Click(object sender, EventArgs e)
{
if (count == 4)
count = 1;
else
count++;
this.Text = "MediaPlayer";
switch (count)
{
case 1:
{
axWindowsMediaPlayer1.URL = file1;
this.Text = file1.Substring(file1.LastIndexOf("\\") + 1) + "--" + this.Text;
break;
}
case 2:
{
axWindowsMediaPlayer1.URL = file2;
this.Text = file2.Substring(file2.LastIndexOf("\\") + 1) + "--" + this.Text;
break;
}
case 3:
{
axWindowsMediaPlayer1.URL = file3;
this.Text = file3.Substring(file3.LastIndexOf("\\") + 1) + "--" + this.Text;
break;
}
case 4:
{
axWindowsMediaPlayer1.URL = file4;
this.Text = file4.Substring(file4.LastIndexOf("\\") + 1) + "--" + this.Text;
break;
}
}

}

private void button3_Click(object sender, EventArgs e)
{
this.axWindowsMediaPlayer1.Ctlcontrols.play();//继续播放
}

private void button4_Click(object sender, EventArgs e)
{
this.axWindowsMediaPlayer1.Ctlcontrols.pause(); //暂停
}

private void button5_Click(object sender, EventArgs e)
{
this.axWindowsMediaPlayer1.settings.volume += 5;//声音+5
}

private void button6_Click(object sender, EventArgs e)
{
this.axWindowsMediaPlayer1.settings.volume -= 5; //声音-5
}
}
}
gxb15131163105 2009-06-08
  • 打赏
  • 举报
回复
学到很多的东西啊,能用简单点的代码就能实现的吗?
hnpylwp 2009-03-04
  • 打赏
  • 举报
回复
学习中............
贫僧又回来了 2009-03-04
  • 打赏
  • 举报
回复
给你发了连个反映都没的!靠
genius_tong 2009-03-04
  • 打赏
  • 举报
回复
怎么会这样:修改了padding属性后确实实现了位置的改变,但是之后在修改ToolStripStatusLabel.text属性后所修改的text内容就显示不出来了(整个ToolStripStatusLabel好像被隐藏了)这是怎么回事儿呀??
genius_tong 2009-03-04
  • 打赏
  • 举报
回复
水平比我高多了……
那就再给个更好的吧~
relive_qiankai 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 daolang0102 的回复:]
这里是我写过的一个播放器完整代码:
你也可以去这个地址看更多信息:http://361330106.qzone.qq.com/
完整代码:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace MP3播放器
{
public partial class Form1 : …
[/Quote]

能否把第三方控件共享下,我想学习下.还请分享.gapt_qian@163.com
止戈而立 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 genius_tong 的回复:]
引用 12 楼 min_jie 的回复:

2、最好是弹出同一个菜单,但根据“有无选中歌曲”来决定某些选项是否为灰色(不可操作)。


某些选项是否为灰色应该怎么设置??没找到呀~~

还有,为什么一个toolStripStstusLabel的size属性不能修改呢???

谢啦~~~
[/Quote]

this.menuItem1.Checked=false;
//VS2003
如果是VS2008则是:
this.toolStripMenuItem2.Checked = false;

后面一个问题没看明白
genius_tong 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 min_jie 的回复:]

2、最好是弹出同一个菜单,但根据“有无选中歌曲”来决定某些选项是否为灰色(不可操作)。
[/Quote]

某些选项是否为灰色应该怎么设置??没找到呀~~

还有,为什么一个toolStripStstusLabel的size属性不能修改呢???

谢啦~~~
哈哈潜伏哥 2009-03-03
  • 打赏
  • 举报
回复
我进来学习一下哈
止戈而立 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 genius_tong 的回复:]
引用 12 楼 min_jie 的回复:
1、界面应该要自己控制,选中下一首播放歌曲,刷新一下。



能说具体点儿吗???
[/Quote]
//index表示刚播放完的那首歌的索引
this.listview1.Items[index].Selected=false;
this.listview1.Items[index+1].Selected=true;
止戈而立 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 genius_tong 的回复:]
引用 24 楼 min_jie 的回复:
后面一个问题没看明白


就是为statusStrip控件添加一个ToolStripStatusLabel,想使这个ToolStripStatusLabel处于statusStrip的中间,但不知道怎么实现,因为它没法移动;就想改一下ToolStripStatusLabel的size,结果,在属性面板里改了以后一离开size属性右边的框框,它就变回原来的值了,这是怎么回事儿呀??
[/Quote]
哦,说的这个啊。修改这个ToolStripStatusLabel的padding就可以了。x1,y1,x2,y2相信你能看得懂,一般改x1和x2的值进行调整就可以了。
genius_tong 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 min_jie 的回复:]
后面一个问题没看明白
[/Quote]

就是为statusStrip控件添加一个ToolStripStatusLabel,想使这个ToolStripStatusLabel处于statusStrip的中间,但不知道怎么实现,因为它没法移动;就想改一下ToolStripStatusLabel的size,结果,在属性面板里改了以后一离开size属性右边的框框,它就变回原来的值了,这是怎么回事儿呀??
lingyin55 2009-03-02
  • 打赏
  • 举报
回复
WindowsMediaPlayer功能貌似很强大,简单的播放器应该都不用涉及音频处理那些。
genius_tong 2009-03-02
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 min_jie 的回复:]
1、界面应该要自己控制,选中下一首播放歌曲,刷新一下。

[/Quote]

能说具体点儿吗???
zcandyly20211 2009-03-02
  • 打赏
  • 举报
回复
2.判断歌曲列表里有没有歌曲。有歌曲的话右键菜单赋上相应的item,反之。。。。
贫僧又回来了 2009-03-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Guyschaos 的回复:]

[/Quote]
大叉,图挂了!哎
贫僧又回来了 2009-03-02
  • 打赏
  • 举报
回复
这样的行吗?要的话你给个邮箱,我发给你!
wlpsgh 2009-03-02
  • 打赏
  • 举报
回复
mark
加载更多回复(14)

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧