实例介绍
【实例简介】
【实例截图】
【核心代码】
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Xml; using System.IO; using System.Threading; namespace MusicPlay_美化_ { public partial class MainFrm : Form { public MainFrm() { InitializeComponent(); } #region //定义一些全局变量 NotifyIcon notify = new NotifyIcon(); //定义托盘 private string musicUrl=null; private bool playState=false; //判断播放状态 private bool listFrmShow = true; //判断播放列表框是否显示 private int selectedIndex; //记录选择的索引 private int playMode; //记录播放模式 private int startX, startY; //位置 private int voiceX, voiceWidth; //记录图片位置和宽 private bool isLeftDown = false; //记录鼠标左键是否被按下 private bool haveVoice = true; //判断是否有声音 private int oldValue;//记录声音滑块的Value; #endregion #region//鼠标移动时图片变换事件 private void picClose_MouseMove(object sender, MouseEventArgs e) { picClose.Image = global::MusicPlay_美化_.Properties.Resources.close_muose_in; } private void picClose_MouseLeave(object sender, EventArgs e) { picClose.Image = global::MusicPlay_美化_.Properties.Resources.close_muose_out; } private void picMiniMode_MouseMove(object sender, MouseEventArgs e) { picMiniMode.Image = global::MusicPlay_美化_.Properties.Resources.minimode_muose_in; } private void picMiniMode_MouseLeave(object sender, EventArgs e) { picMiniMode.Image = global::MusicPlay_美化_.Properties.Resources.minimode_muose_out; } private void picMiniSize_MouseMove(object sender, MouseEventArgs e) { picMiniSize.Image = global::MusicPlay_美化_.Properties.Resources.minimize_mouse_in; } private void picMiniSize_MouseLeave(object sender, EventArgs e) { picMiniSize.Image = global::MusicPlay_美化_.Properties.Resources.minimize_mouse_out; } private void picVoice_MouseMove(object sender, MouseEventArgs e) { picVoice.Image = global::MusicPlay_美化_.Properties.Resources.voice_mouse_in; } private void picVoice_MouseLeave(object sender, EventArgs e) { if (haveVoice == true) { picVoice.Image = global::MusicPlay_美化_.Properties.Resources.voice_mouse_out; } else { picVoice.Image = global::MusicPlay_美化_.Properties.Resources.voice_mouse_in; } } private void picPre_MouseMove(object sender, MouseEventArgs e) { picPre.Image = global::MusicPlay_美化_.Properties.Resources.prev_mouse_in; } private void picPre_MouseLeave(object sender, EventArgs e) { picPre.Image = global::MusicPlay_美化_.Properties.Resources.prev_mouse_out; } private void picPlayPause_MouseMove(object sender, MouseEventArgs e) { if (playState == false) { picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.play_muose_in; } else { picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.pause_mouse_in; } } private void picPlayPause_MouseLeave(object sender, EventArgs e) { if (playState == false) { picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.play_muose_out; } else { picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.pause_mouse_out; } } private void picStop_MouseMove(object sender, MouseEventArgs e) { picStop.Image = global::MusicPlay_美化_.Properties.Resources.stop_muose_in; } private void picStop_MouseLeave(object sender, EventArgs e) { picStop.Image = global::MusicPlay_美化_.Properties.Resources.stop_muose_out; } private void picNext_MouseMove(object sender, MouseEventArgs e) { picNext.Image = global::MusicPlay_美化_.Properties.Resources.next_muose_in; } private void picNext_MouseLeave(object sender, EventArgs e) { picNext.Image = global::MusicPlay_美化_.Properties.Resources.next_muose_out; } private void picOpen_MouseMove(object sender, MouseEventArgs e) { picOpen.Image = global::MusicPlay_美化_.Properties.Resources.open_muose_in; } private void picOpen_MouseLeave(object sender, EventArgs e) { picOpen.Image = global::MusicPlay_美化_.Properties.Resources.open_muose_out; } private void picAbout_MouseMove(object sender, MouseEventArgs e) { picAbout.Image = global::MusicPlay_美化_.Properties.Resources.About_mouse_in; } private void picAbout_MouseLeave(object sender, EventArgs e) { picAbout.Image = global::MusicPlay_美化_.Properties.Resources.About_mouse_out; } private void picPlayList_MouseMove(object sender, MouseEventArgs e) { picPlayList.Image = global::MusicPlay_美化_.Properties.Resources.playlist_mouse_in; } private void picPlayList_MouseLeave(object sender, EventArgs e) { picPlayList.Image = global::MusicPlay_美化_.Properties.Resources.playlist_mouse_out; } private void picEQ_MouseMove(object sender, MouseEventArgs e) { picEQ.Image = global::MusicPlay_美化_.Properties.Resources.equalizer_mouse_in; } private void picEQ_MouseLeave(object sender, EventArgs e) { picEQ.Image = global::MusicPlay_美化_.Properties.Resources.equalizer_mouse_out; } private void picLrc_MouseMove(object sender, MouseEventArgs e) { picLrc.Image = global::MusicPlay_美化_.Properties.Resources.lyric_mouse_in; } private void picLrc_MouseLeave(object sender, EventArgs e) { picLrc.Image = global::MusicPlay_美化_.Properties.Resources.lyric_mouse_out; } private void 添加ToolStripMenuItem_MouseMove(object sender, MouseEventArgs e) { 添加ToolStripMenuItem.Image = global::MusicPlay_美化_.Properties.Resources.add_mouse_in; } private void 添加ToolStripMenuItem_MouseLeave(object sender, EventArgs e) { 添加ToolStripMenuItem.Image = global::MusicPlay_美化_.Properties.Resources.add_mouse_out; } private void 删除toolStripMenuItem_MouseMove(object sender, MouseEventArgs e) { 删除toolStripMenuItem.Image = global::MusicPlay_美化_.Properties.Resources.sub_mouse_in; } private void 删除toolStripMenuItem_MouseLeave(object sender, EventArgs e) { 删除toolStripMenuItem.Image = global::MusicPlay_美化_.Properties.Resources.sub_mouse_out; } private void 列表ToolStripMenuItem_MouseMove(object sender, MouseEventArgs e) { 列表ToolStripMenuItem.Image = global::MusicPlay_美化_.Properties.Resources.list_mouse_in; } private void 列表ToolStripMenuItem_MouseLeave(object sender, EventArgs e) { 列表ToolStripMenuItem.Image = global::MusicPlay_美化_.Properties.Resources.list_mouse_out; } private void 查找ToolStripMenuItem_MouseMove(object sender, MouseEventArgs e) { 查找ToolStripMenuItem.Image = global::MusicPlay_美化_.Properties.Resources.search_mouse_in; } private void 查找ToolStripMenuItem_MouseLeave(object sender, EventArgs e) { 查找ToolStripMenuItem.Image = global::MusicPlay_美化_.Properties.Resources.search_mouse_out; } private void 模式ToolStripMenuItem_MouseMove(object sender, MouseEventArgs e) { 模式ToolStripMenuItem.Image = global::MusicPlay_美化_.Properties.Resources.moshi_mouse_in; } private void 模式ToolStripMenuItem_MouseLeave(object sender, EventArgs e) { 模式ToolStripMenuItem.Image = global::MusicPlay_美化_.Properties.Resources.moshi_mouse_out; } #endregion #region //各控件事件 private void MainFrm_Load(object sender, EventArgs e) //窗体启动加载事件 { playMode = 3; //默认的播放模式为循序播放 WindowsMediaPlayer.settings.volume = 50; //设置声音大小,int 0 ~ 100 trackBarVoice.Value = 6; //初始值 oldValue = trackBarVoice.Value; //记录原来的值 voiceX = picVoiceCover.Location.X; //记录图片位置 voiceWidth = picVoiceCover.Size.Width; //记录图片的宽 listBox1.ContextMenuStrip = contextMenuStripPlaylist; //右击播放列表时显示菜单 //读取播放列表 if (File.Exists(System.Windows.Forms.Application.StartupPath "\\PlayList.xml")) //如果播放列表存在,读入播放列表 { //注意播放列表的路径 LoadXml(); //调用函数, } } private void MainFrm_MouseDown(object sender, MouseEventArgs e) //鼠标按下 { if (e.Button == MouseButtons.Left) //按下做键 { isLeftDown = true; //为真 startX = e.X; //记录X,Y值 startY = e.Y; } } private void MainFrm_MouseMove(object sender, MouseEventArgs e) //移动窗体 鼠标移动 { if (isLeftDown == true) //只有鼠标左键按下时 { this.Location = new Point(Control.MousePosition.X - startX, Control.MousePosition.Y - startY); //窗体移动 } } private void MainFrm_MouseUp(object sender, MouseEventArgs e) //松开鼠标 { if (e.Button == MouseButtons.Left) { isLeftDown = false; //此时为假 } } private void MainFrm_Click(object sender, EventArgs e) //窗体单击 { trackBarVoice.Focus(); //单击窗体聚焦 } private void picClose_Click(object sender, EventArgs e) //退出 { this.Close(); } private void picMiniSize_Click(object sender, EventArgs e) //最小化事件 { WindowState = FormWindowState.Minimized; this.Visible = false; } private void picVoice_Click(object sender, EventArgs e) //设置静音 { if (haveVoice == true) { haveVoice = false; WindowsMediaPlayer.settings.mute = true; //静音 } else { haveVoice = true; WindowsMediaPlayer.settings.mute = false; //有声音 } } private void picPre_Click(object sender, EventArgs e) //前一首事件 { selectedIndex = listBox1.SelectedIndex - 1; //给当前选择的选项索引-1; if (selectedIndex > -1) { picJindu.Width = 0; //设置进度条宽度为0 timerJindu.Enabled = false; //暂时不可用 listBox1.SetSelected(selectedIndex, true); //改变listbox选择的项 listBox1SelectedIndexChanged(); // 调用函数 } } private void picPlayPause_Click(object sender, EventArgs e) //暂停/开始事件 { if (playState == true) { WindowsMediaPlayer.Ctlcontrols.pause(); picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.play_muose_out; //改变图标 playState = false; //状态改变 } else { WindowsMediaPlayer.Ctlcontrols.play(); picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.pause_mouse_out; //改变图标 playState = true; //状态改变 } } private void picStop_Click(object sender, EventArgs e) //停止 { WindowsMediaPlayer.Ctlcontrols.stop(); //停止播放 picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.play_muose_out; //改变图标 playState = false; //状态改变 timer1.Enabled = false; //停止计时 lblPlayState.Text = "状态:停止"; //改变text lbShengdao.Text = "声道"; lblCurrentTime.Text = "00:00"; } private void picNext_Click(object sender, EventArgs e) //下一首 { selectedIndex = listBox1.SelectedIndex 1; //给当前选择的选项索引 1; if (selectedIndex < (listBox1.Items.Count)) { picJindu.Width = 0; //设置进度条宽度为0 timerJindu.Enabled = false; //暂时不可用 listBox1.SetSelected(selectedIndex, true); //改变listbox选择的项 listBox1SelectedIndexChanged(); // 调用函数 } } private void picPlayList_Click(object sender, EventArgs e) //显示/关闭播放列表 { if (listFrmShow == false) { this.Height = 295; //关闭列表框 listFrmShow = true; } else { this.Height = 144; //显示列表框 listFrmShow=false; } } private void picAbout_Click(object sender, EventArgs e) //显示说明 { About frm = new About(); frm.Show(); } private void 文件ToolStripMenuItem_Click(object sender, EventArgs e) //打开文件 { xmlEvent.WriteToXmlFromFile(); //直接调用方法 listBox1.Items.Clear(); //先把原来信息清除掉后再加载 LoadXml(); //写完之后直接加载XML到播放列表中 } private void 文件夹ToolStripMenuItem_Click(object sender, EventArgs e) //打开文件夹 { xmlEvent.WriteToXmlFromDir(); //直接调用方法 listBox1.Items.Clear(); //先把原来信息清除掉后再加载 LoadXml(); //写完之后直接加载XML到播放列表中 } private void 选中文件ToolStripMenuItem_Click(object sender, EventArgs e) //删除选中文件 { try { xmlEvent.removeInfo(listBox1.SelectedItem.ToString()); listBox1.Items.RemoveAt(listBox1.SelectedIndex); //删除选定的项 } catch{ } } private void 全部删除ToolStripMenuItem_Click_1(object sender, EventArgs e) //全部删除 { listBox1.Items.Clear(); //清除listbox中全部项 File.Delete(System.Windows.Forms.Application.StartupPath "\\PlayList.xml"); //删除播放列表 } private void 新建列表ToolStripMenuItem_Click(object sender, EventArgs e) //新建列表(为写) { MessageBox.Show("不好意思,程序未开发", "呵呵", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } private void 单曲播放ToolStripMenuItem_Click(object sender, EventArgs e) //单曲播放 { 单曲播放ToolStripMenuItem1.Checked = true; 单曲循环ToolStripMenuItem1.Checked = false; 顺序播放ToolStripMenuItem1.Checked = false; 循环播放ToolStripMenuItem1.Checked = false; playMode = 1; //1代表单曲播放 } private void 单曲循环ToolStripMenuItem_Click(object sender, EventArgs e) //单曲循环 { 单曲播放ToolStripMenuItem1.Checked = false; 单曲循环ToolStripMenuItem1.Checked = true; 顺序播放ToolStripMenuItem1.Checked = false; 循环播放ToolStripMenuItem1.Checked = false; playMode = 2; //2代表单曲循环 } private void 循序播放ToolStripMenuItem_Click(object sender, EventArgs e) //循序播放 { 单曲播放ToolStripMenuItem1.Checked = false; 单曲循环ToolStripMenuItem1.Checked = false; 顺序播放ToolStripMenuItem1.Checked = true; 循环播放ToolStripMenuItem1.Checked = false; playMode = 3; //3代表循环播放 } private void 循环播放ToolStripMenuItem_Click(object sender, EventArgs e) //循环播放 { 单曲播放ToolStripMenuItem1.Checked = false; 单曲循环ToolStripMenuItem1.Checked = false; 顺序播放ToolStripMenuItem1.Checked = false; 循环播放ToolStripMenuItem1.Checked = true; playMode = 4; //4代表循环播放 } private void listBox1_DoubleClick(object sender, EventArgs e) { try { musicUrl = xmlEvent.getURL(listBox1.SelectedItem.ToString()); //从xml中查找位置 WindowsMediaPlayer.URL = musicUrl; WindowsMediaPlayer.Ctlcontrols.play(); picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.pause_mouse_out; //改变图标 playState = true; //状态改变 timer1.Enabled = true; //时钟监视当前播放的状态 picJindu.Width = 0; //设置进度条宽度为0 } catch { } } //listbox双击 private void trackBarVoice_Scroll(object sender, EventArgs e) //控制声音 { int newValue = trackBarVoice.Value; //记录当前声音滑块的位置 if (oldValue < newValue) //如果向右滑 { WindowsMediaPlayer.settings.volume = 10; //增加音量 voiceX = 5; voiceWidth -= 5; picVoiceCover.Location = new System.Drawing.Point(voiceX, 63); //改变图片位置 picVoiceCover.Size = new System.Drawing.Size(voiceWidth, 11); //改变图片大 } if (oldValue > newValue) //如果向左滑 { WindowsMediaPlayer.settings.volume -= 10; //降低音量 voiceX -= 5; voiceWidth = 5; picVoiceCover.Location = new System.Drawing.Point(voiceX, 63); picVoiceCover.Size = new System.Drawing.Size(voiceWidth, 11); if (voiceX <= 151) { picVoiceCover.Location = new System.Drawing.Point(146, 63); picVoiceCover.Size = new System.Drawing.Size(28, 11); WindowsMediaPlayer.settings.volume = 0; } } oldValue = trackBarVoice.Value; //重新给oldValue赋值 } private void WindowsMediaPlayer_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) //windows media状态改变 { //利用PlayStateChange事件来实现由一曲到下一曲的替换,但是在响应PlayStateChange //事件的时候直接改变Player的url无法让它直接播放下一曲,可添加一个timer来解决 if (WindowsMediaPlayer.playState == WMPLib.WMPPlayState.wmppsMediaEnded) //当歌曲结束时 { timerMode.Enabled = true; // 激活timerMode picJindu.Width = 0; //设置进度条宽度为0 timerJindu.Enabled = false; //暂时不可用 } } private void timer1_Tick(object sender, EventArgs e) { lblCurrentTime.Text = WindowsMediaPlayer.Ctlcontrols.currentPositionString; //lblName.Text = "当前播放:" listBox1.SelectedItem.ToString(); //this.Text = "当前播放:" listBox1.SelectedItem.ToString(); //改变窗体的显示 if (WindowsMediaPlayer.currentMedia.duration > 0) //由于歌曲交换期间,WindowsMediaPlayer.currentMedia.duration会获取值为0 { double musicLong = WindowsMediaPlayer.currentMedia.duration; //获取歌曲的时间长度 timerJindu.Interval = (int)((musicLong / 162) * 1000); //获取timerJinfu的间隔事件,类似于求速度 lbShengdao.Text = "立体声"; lblName.Text = "当前播放:" WindowsMediaPlayer.currentMedia.name; this.Text = "当前播放:" WindowsMediaPlayer.currentMedia.name; //改变窗体的显示 if (playState == true) { lblPlayState.Text = "状态:播放"; timerJindu.Enabled = true; } else { lblPlayState.Text = "状态:暂停"; timerJindu.Enabled = false; } } } private void timerMode_Tick(object sender, EventArgs e) { selectedIndex = listBox1.SelectedIndex; //获取当前播放的item switch (playMode) { case 1: danQuBoFang(); break; case 2: danQuXunhuan(); break; case 3: xunXuBoFang(); break; case 4: xunxuXunHuan(); break; default: MessageBox.Show("位置错误,请重新运行程序", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); break; } timerMode.Enabled = false; //设置为不可用,知道下一首个播放完毕 } private void timerJindu_Tick(object sender, EventArgs e) { if(picJindu.Width<=162) picJindu.Width ; //宽度自加 } private void 还原ToolStripMenuItem_Click(object sender, EventArgs e) //显示窗体 { this.Show(); this.WindowState = FormWindowState.Normal; notify.Visible = false; //隐藏托盘程序中的图标 } private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) //退出 { notify.Visible = false; this.Close(); } #endregion #region //自定义方法 private void notifyClick(object sender, EventArgs e) //鼠标双击托盘事件 { this.Show(); this.WindowState = FormWindowState.Normal; notify.Visible = false; //隐藏托盘程序中的图标 } private void listBox1SelectedIndexChanged() //listboxitem改变函数,自己写的函数 { try { musicUrl = xmlEvent.getURL(listBox1.SelectedItem.ToString()); //从xml中查找位置 WindowsMediaPlayer.URL = musicUrl; WindowsMediaPlayer.Ctlcontrols.play(); //播放歌曲 picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.pause_mouse_out; //改变图标 playState = true; //状态改变 timer1.Enabled = true;//开始计时 } catch { } } private void LoadXml() //加载XML文件 { XmlReader reader; reader = new XmlTextReader(System.Windows.Forms.Application.StartupPath "\\PlayList.xml"); try { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "MusicName") { this.listBox1.Items.Add(reader.ReadElementString().Trim()); } } } } catch (Exception ex) { MessageBox.Show(ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { if (reader != null) reader.Close(); if (listBox1.Items.Count != 0) //只有当列表中存在时才显示 { listBox1.SetSelected(0, true); //设置默认的选择项 lblName.Text = "当前播放:" listBox1.SelectedItem.ToString(); //显示选中歌曲名字 this.Text = "当前播放:" listBox1.SelectedItem.ToString(); } } } //播放模式方法 private void danQuBoFang() //单曲播放 { WindowsMediaPlayer.Ctlcontrols.stop(); //停止播放 picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.play_muose_out; //改变图标 playState = false; //状态改变 timer1.Enabled = false; //停止计时 lblPlayState.Text = "状态:停止"; //改变text lbShengdao.Text = "声道"; lblCurrentTime.Text = "00:00"; } private void danQuXunhuan() //单曲循环 { musicUrl = xmlEvent.getURL(listBox1.SelectedItem.ToString()); //从xml中查找位置 WindowsMediaPlayer.URL = musicUrl; WindowsMediaPlayer.Ctlcontrols.play(); //播放 } private void xunXuBoFang() //循序播放 { if (selectedIndex < (listBox1.Items.Count - 1)) { selectedIndex = listBox1.SelectedIndex 1; //给当前选择的选项索引 1; listBox1.SetSelected(selectedIndex, true); //改变listbox选择的项 listBox1SelectedIndexChanged(); // 调用函数 } else { WindowsMediaPlayer.Ctlcontrols.stop(); //停止播放 picPlayPause.Image = global::MusicPlay_美化_.Properties.Resources.play_muose_out; //改变图标 playState = false; //状态改变 timer1.Enabled = false; //停止计时 lblPlayState.Text = "状态:停止"; //改变text lbShengdao.Text = "声道"; lblCurrentTime.Text = "00:00"; timerJindu.Enabled = false; } } private void xunxuXunHuan() //循环播放 { if (selectedIndex == (listBox1.Items.Count - 1)) //如果当前播放的歌曲在列表末位 selectedIndex = 0; //索引移到列表头 else selectedIndex = listBox1.SelectedIndex 1; //给当前选择的选项索引 1; listBox1.SetSelected(selectedIndex, true); //改变listbox选择的项 listBox1SelectedIndexChanged(); // 调用函数 } #endregion } }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论