各位大虾们:
想写一个音乐播放器,主要思路是用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.如何添加一个控制音量的东西??
想写一个音乐播放器,主要思路是用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.如何添加一个控制音量的东西??
2 点击事件的代码里面,用if判断下,遍历下列表框,看有没有选中项.
3 WMPLib.WindowsMediaPlayer自带有播放进度显示.
4 WMPLib.WindowsMediaPlayer自带有音量控制..
谢啦~~~
你也可以去这个地址看更多信息: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 : Form
{
public Form1()
{
InitializeComponent();
}
string fileName = "";
int i = 1;
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
fileName = folderBrowserDialog1.SelectedPath;
string[] mp3Name = Directory.GetFiles(fileName);
foreach(string str in mp3Name)
{
//str.Substring();
listBox1.Items.Add(i+"."+str.Substring(str.LastIndexOf('\\')+1));
i++;
}
}
}
private void listBox1_DoubleClick(object sender, EventArgs e)
{
timer1.Start();
try
{
string playName = fileName+"\\"+listBox1.SelectedItem.ToString().Substring(listBox1.SelectedItem.ToString().IndexOf('.')+1);
axWindowsMediaPlayer1.URL = playName;
}catch(Exception ex)
{
MessageBox.Show("Sorry,Can't Find You FilePath,Please Sure You FileName!"+ex.ToString(),"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
private void Form1_Load(object sender, EventArgs e)
{
skinEngine1.SkinFile = "MSN.ssk";
timer1.Start();
DataSet Ds = new DataSet();
Ds.ReadXml("FileName.xml");
for (int a = 0; a < Ds.Tables[0].Rows.Count; a++)
{
object[] list = new object[a];
list = Ds.Tables[0].Rows[a].ItemArray;
listBox1.Items.Add( list[0].ToString().Substring(list[0].ToString().LastIndexOf('\\')+1));
fileName = list[0].ToString().Substring(0,list[0].ToString().LastIndexOf('\\')+1);
}
//MessageBox.Show(fileName);
//fileName=Ds.Tables[0].Rows[0]
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
string States = axWindowsMediaPlayer1.status.ToString();
if (States.Equals("已停止"))
{
listBox1.SelectedIndex++;
listBox1_DoubleClick(null, null);
}
else if (States.Equals("准备就绪"))
{
MessageBox.Show("请确定你的文件格式是否正确!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
timer1.Stop();
}
toolStripStatusLabel1.Text = States;
toolStripStatusLabel3.Text = "当前时间为:" + System.DateTime.Now.ToLongDateString() + System.DateTime.Now.ToLongTimeString();
}
catch (Exception ex)
{
listBox1.SelectedIndex = 1;
listBox1_DoubleClick(null, null);
}
}
private void pauseToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.pause();
}
private void stopToolStripMenuItem_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.play();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void 添加文件ToolStripMenuItem_Click(object sender, EventArgs e)
{
if(openFileDialog1.ShowDialog()==DialogResult.OK)
{
//if (i != 1)
//{
// i++;
//}
string StrName = openFileDialog1.FileName;
fileName = StrName.Substring(0, StrName.LastIndexOf('\\')+1);
listBox1.Items.Add(i + "." + StrName.Substring(StrName.LastIndexOf('\\') + 1));
i++;
}
}
private void addFilesToolStripMenuItem_Click(object sender, EventArgs e)
{
openToolStripMenuItem_Click(null,null);
}
private void deleteFileToolStripMenuItem_Click(object sender, EventArgs e)
{
listBox1.Items.Remove(listBox1.SelectedItem);
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
//string[] ArrayStr = new string;
////for (int j= 0; j<= ArrayStr.Length;j++)
////{
//// ArrayStr[j] = listBox1.Items[j].ToString();
////}
int t = listBox1.Items.Count;
for (int c = 0; c < t;c++ )
{
if(listBox1.Items[c].ToString().Equals("")||listBox1.Items[c].Equals("歌曲列表"))
{
continue;
}
DataSet Ds = new DataSet();
Ds.ReadXml(Application.StartupPath+"\\FileName.xml");
DataRow Dr = Ds.Tables[0].NewRow();
Dr["Name"] =fileName+"\\"+ listBox1.Items[c].ToString();
Ds.Tables[0].Rows.Add(Dr);
Ds.WriteXml(Application.StartupPath + "\\FileName.xml");
}
MessageBox.Show("当前列表保存成功,下次你可以轻松享受Coffee给你带来的快乐!","温馨提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (this.Visible)
{
this.Visible = false;
}
else
{
this.Visible = true;
}
}
private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
this.listview1.Items[index].Selected=false;
this.listview1.Items[index+1].Selected=true;
某些选项是否为灰色应该怎么设置??没找到呀~~还有,为什么一个toolStripStstusLabel的size属性不能修改呢???谢啦~~~
this.menuItem1.Checked=false;
//VS2003
如果是VS2008则是:
this.toolStripMenuItem2.Checked = false;后面一个问题没看明白
能否把第三方控件共享下,我想学习下.还请分享[email protected]
就是为statusStrip控件添加一个ToolStripStatusLabel,想使这个ToolStripStatusLabel处于statusStrip的中间,但不知道怎么实现,因为它没法移动;就想改一下ToolStripStatusLabel的size,结果,在属性面板里改了以后一离开size属性右边的框框,它就变回原来的值了,这是怎么回事儿呀??
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
}
}
}