COM组件Windows Media Player(二)

    看了网上一些朋友写的关于COM组件Windows Media Player控件的使用心得,我也做了一个很简易的音乐播放器,对于Windows Media Player的初学者朋友们应该有一点帮助。

    值得一说的是,很多的资料都没有把控件的一些方法说明白(包括MSDN上面),比如控件的play、pause、stop方法,MSDN上面提供的我都没有在控件中直接找到,而这些方法都是包含在Ctlcontrol属性中,更详细的资料,请看COM组件Windows Media Player(一)(转)

    下面我把自做的简易音乐播放器分享上来。

一、文件:

    点击打开,会弹出浏览窗口选择歌曲;点击关闭,会关闭正在播放的歌曲;点击退出,退出程序。

1
 
2

二、操作:

    设置目录,可以设置播放的路径,相当于批量导入列表;播放,暂停分别实现对应功能。

    目前并没有实现列表的记录,也就是程序需要每次都重新导入列表。

3

4

三、布局:

    列表:点击显示列表,并在此标签前面打勾,再次点击隐藏列表,取消前面的勾。(循环)

5

6

四、关于:

    弹出介绍作者和播放器的窗口。这个不用多说了。。

8

五、运行

    程序运行就是这个效果,很简单的播放器。

    双击列表中的歌曲可实现歌曲的切换。

9

六、源程序

    列表窗体中没有加入代码,而主窗体中的Desinger.cs文件中的代码就不贴了,都是自动生成的。

把主窗体的实现代码粘贴在此:

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using System.Media;

namespace EX03_1
ExpandedBlockStart.gifContractedBlock.gif
{
    
public partial class Player : Form
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
ContractedSubBlock.gifExpandedSubBlockStart.gif        
私有变量#region 私有变量
        
private ArrayList alpath = new ArrayList();//保存路径的列表
        private ArrayList alname = new ArrayList();//保存文件名,用于显示正在播放的音乐文件

名称
        
private List MusicList = new List();//弹出的列表窗口
        private bool ListShow;//判断列表窗口的现实状态
        #endregion


ContractedSubBlock.gifExpandedSubBlockStart.gif        
构造函数#region 构造函数
        
public Player()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            InitializeComponent();
            
//将列表窗体的listbox的双击事件绑定在自定义事件上
            MusicList.listBox1.DoubleClick += new EventHandler

(
this.MusicListBox_DoubleCilck);
        }

        
#endregion


ContractedSubBlock.gifExpandedSubBlockStart.gif        
方法#region 方法
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 主窗体加载时的方法,从文件中读取参数,判断是否显示列表窗体
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void Player_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{      
            FileInfo finfo 
= new FileInfo(@"..\..\Config.ini");
            StreamReader sr 
= finfo.OpenText();
            
//循环读取每一行,此处循环的目的是为了方便
            
//以后扩展,比如加上其他的子窗体
            
//文件每行存储一个参数,对应一个子窗体的显示状态
            while (sr.Peek() >= 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
string MusicListShow = sr.ReadLine();
                
if (MusicListShow.Contains("MusicListShow"&& MusicListShow.Contains

(
"true"))
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    列表ToolStripMenuItem.Checked 
= ListShow = true;
                    MusicList.Show();
                    MusicList.Left 
= this.Left + this.Width;//仅靠主窗体右侧
                    MusicList.Top = this.Top;//与主窗体齐平
                }

            }

            sr.Close();
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 打开音乐文件
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if (openFileDialog1.ShowDialog() == DialogResult.OK)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
string fn = openFileDialog1.FileName;
                axWindowsMediaPlayer1.URL 
= fn;
                
//显示正在播放的音乐
                label1.Text = "正在播放: " + fn.Substring(fn.LastIndexOf("\\"+ 1);
            }

        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 关闭正在播放的音乐文件,再次点击播放可从头开始
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void 关闭CToolStripMenuItem_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            axWindowsMediaPlayer1.close();
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 退出程序
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void 退出XToolStripMenuItem_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
this.Dispose();
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 设置播放目录,相当于到导入列表
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void 设置目录DToolStripMenuItem_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            folderBrowserDialog1.ShowDialog();
            
//选择路径
            DirectoryInfo dir = new DirectoryInfo(folderBrowserDialog1.SelectedPath);
            
foreach (FileInfo f in dir.GetFiles())
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
//支持wav,mp3(Windows Media Player还支持其他的格式,包括视频格式)
                if (f.Name.ToLower().EndsWith(".wav"|| f.Name.ToLower().EndsWith(".mp3"))
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    alpath.Add(f.FullName);
                    alname.Add(f.Name);
                }

            }

            
foreach (string s in alname)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                MusicList.listBox1.Items.Add(s);
//显示在listbox中
            }

        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 播放音乐
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void 播放PToolStripMenuItem_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if (MusicList.listBox1.SelectedItem != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
//用MusicList.listBox1.SelectedIndex作为下表在listbox中选择
                axWindowsMediaPlayer1.URL = alpath

[MusicList.listBox1.SelectedIndex].ToString();
                label1.Text 
= "正在播放: "+alname

[MusicList.listBox1.SelectedIndex].ToString();
            }

        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 暂停播放,点击播放按键可继续(不从头开始)
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void 暂停SToolStripMenuItem_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            axWindowsMediaPlayer1.Ctlcontrols.pause();
            
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 点击切换列表的显示状态
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void 列表ToolStripMenuItem_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
if (ListShow == true)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                MusicList.Hide();
                列表ToolStripMenuItem.Checked 
= false;//取消打勾
                ListShow = false;
            }

            
else if (ListShow == false)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                MusicList.Show();
                列表ToolStripMenuItem.Checked 
= true;//打勾
                ListShow = true;
            }

        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 列表的双击事件,双击后调用“播放PToolStripMenuItem_Click”方法
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void MusicListBox_DoubleCilck(object sender,EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            播放PToolStripMenuItem_Click(sender, e);
        }

ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
        
/// 显示关于窗口
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void 本播放器ToolStripMenuItem_Click(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            About a 
= new About();
            a.ShowDialog();
        }

        
#endregion

    }

}

 

转载于:https://www.cnblogs.com/chenl861004/archive/2009/09/07/1561774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值