openFileDialog1.Filter = "mp3文件(*.mp3;)|*.mp3|所有文件(*.*)|*.*";
            if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    textBox5.Text = System.IO.Path.GetFileName(this.openFileDialog1.FileName);
                    //*********************************************
                    //播放发音
                    string name = this.openFileDialog1.FileName;
                    ///产生短路径名
                    StringBuilder shortpath = new StringBuilder(80);
                    int result = GetShortPathName(name, shortpath, shortpath.Capacity);
                    name = shortpath.ToString();
                    mciSendString(@"close all", null, 0, 0);
                    mciSendString(@"open " + name + " alias song", null, 0, 0); //打开
                    mciSendString("play song", null, 0, 0); //播放
                    //**********************************************
                }
                catch (Exception) { }
            }///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
        /// 使用API
        /// </summary>
        public static uint SND_ASYNC = 0x0001; // play asynchronously 
        public static uint SND_FILENAME = 0x00020000; // 按文件名播放
        [DllImport("winmm.dll")]
        public static extern int mciSendString(string m_strCmd, string m_strReceive, int m_v1, int m_v2);        [DllImport("Kernel32", CharSet = CharSet.Auto)]
        static extern Int32 GetShortPathName(String path, StringBuilder shortPath, Int32 shortPathLength);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
自己改改吧

解决方案 »

  1.   

    右键toolbox-->选择item--->COM组件---->钩选Windows Media Player--->OK
      

  2.   

    最好将该音乐文件放到运行目录下的一个地方,
    public static uint SND_ASYNC = 0x0001; // play asynchronously 
    public static uint SND_FILENAME = 0x00020000; // name is file name 
    [DllImport("winmm.dll")] 
    public static extern int mciSendString(string m_strCmd, string m_strReceive, int m_v1, int m_v2); [DllImport("Kernel32", CharSet = CharSet.Auto)] 
    static extern Int32 GetShortPathName(String path,StringBuilder shortPath, Int32 shortPathLength); 这些代码放在最前面,表示引入两个winmm库
    然后再窗体启动的load事件中添加如下代码即可:
    string name = @"E:\Music\故乡的原风景.mp3";
     System.Text.StringBuilder shortpath = new System.Text.StringBuilder(80);
    int result = GetShortPathName(name, shortpath, shortpath.Capacity);
    name = shortpath.ToString();
    mciSendString(@"close all", null, 0, 0);
    mciSendString(@"open " + name + " alias song", null, 0, 0); //打开 
    mciSendString("play song", null, 0, 0); //播放
      

  3.   

    用winmm方法可以不用添加任何控件,只需要引入两个dll即可,就是在程序代码最前面添加引用,之后再load事件中播放
      

  4.   

    在Form_Load事件中添加如下代码:
    string MyFileName="C:\\音乐名.mp3";
    QuartzTypeLib.FilgraphManager grahManager=new QuartzTypeLib.FilgraphManager();
    QuartzTypeLib.IMediaControl control=(QuartzTypeLib.IMediaControl)grahManager;
    control.RenderFile(MyFileName);
    control.Run();在项目->添加引用->浏览->[windows目录]->system32->quartz.dll
      

  5.   

    8楼的方法是引用系统的另外一个dll,能帮忙解释哈吗?这个是什么原理?
      

  6.   


    呵呵,这是系统自带的,我最近刚好要写个多媒体播放器,用到它。其实所有的应用程序都是用的windows函数。只不过有些常用的vc#将它封装拉。
      

  7.   

    8楼的,我试了下,好像只能播放几秒钟,就停了,我的是VISTA系统,播放一首4M的歌
      

  8.   

    这个就不清楚了,我的系统不是VISTA,我也不能帮你测试,你看用另一个线程控制背景音乐能行吗?
    namespace Test
    {
        public partial class Form1 : Form
        {
            
            public Form1()
            {
                InitializeComponent();
              
            }
           // private delegate void player();
            private void plaermusic()
            {
                string MyFileName = "E:\\音乐\\其他\\forever-friends.mp3";
                QuartzTypeLib.FilgraphManager grahManager = new QuartzTypeLib.FilgraphManager();
                QuartzTypeLib.IMediaControl control = (QuartzTypeLib.IMediaControl)grahManager;
                control.RenderFile(MyFileName);
                control.Run();        }        private void Form1_Load(object sender, EventArgs e)
            {
                new System.Threading.Thread(new System.Threading.ThreadStart(plaermusic)).Start();
            }       
        }
        
    }
      

  9.   


    QuartzTypeLib这个的引用在哪里可以找到啊?