0

メディアファイルを再生するためにWMPlibを実装する単純な音楽プレーヤーを作成しています....ファイルを開くダイアログを使用してファイルを開こうとしています...ダイアログが表示され、ファイルを選択できますが、しようとすると例外が発生しますファイル名をPlayer.URLに割り当てます

ラインで

Player.URL = openFileDialog1.FileName;

エラーは言う

オブジェクト参照がオブジェクト インスタンスに設定されていません。誰かが私にファイル名をplayer.URLに割り当てる方法についての手がかりを教えてもらえますか

完全なコードは次のとおりです。

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;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {

        WMPLib.WindowsMediaPlayer Player;
        public Form1()
        {
            InitializeComponent();
        }




        private void PlayFile(String url)
        {
            Player = new WMPLib.WindowsMediaPlayer();
            Player.PlayStateChange +=
                new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
            Player.MediaError +=
                new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
            Player.URL = url;
            Player.controls.play();
        }

        private void Player_PlayStateChange(int NewState)
        {
            if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped)
            {
                this.Close();
            }
        }

        private void Player_MediaError(object pMediaObject)
        {
            MessageBox.Show("Cannot play media file.");
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            openFileDialog1.Filter = "(mp3,wav,mp4,mov,wmv,mpg)|*.mp3;*.wav;*.mp4;*.mov;*.wmv;*.mpg|all files|*.*";
            openFileDialog1.ShowDialog(); 



        }

        private void button2_Click(object sender, EventArgs e)
        {
            PlayFile(Player.URL);
        }

        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            MessageBox.Show(openFileDialog1.FileName);
            Player.URL = openFileDialog1.FileName;
        }
    }
}
4

2 に答える 2

1

使用する前に、必ずWMPLib.WindowsMediaPlayerのインスタンスを作成してください。現在、「ファイルを開く」ボタンをクリックして、返されたファイル名をnullオブジェクトに割り当てようとしているようです。

于 2013-01-10T08:07:26.710 に答える
1

次のように openFileDialog1 を使用してみてください。

DialogResult result = openFileDialog1.ShowDialog();

if (result == DialogResult.OK)
{
   Player.URL = openFileDialog1.FileName;
}

button1_Click() で

于 2013-01-10T07:37:53.347 に答える