Как остановить воспроизведение mp3 при нажатии кнопки? - PullRequest
0 голосов
/ 21 января 2019

Я только что "перешел" из C ++ и Rad Studio в C # и Visual Studio, так как я вижу больше учебников и справку, доступную в Интернете для VC.Но .. У меня проблема.

Я знаю, как играть музыку при создании формы (при запуске программы).Но как я могу остановить воспроизведение музыки, используя обычный TButton?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _01_21_2019
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            // play an intro sound when a form is shown
              WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
              wplayer.URL = "intro.mp3";
              wplayer.controls.play();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            wplayer.controls.stop(); // Here it is not working - "current context"



        }
    }
}

Компилятор говорит:

Ошибка CS0103 Имя 'wplayer' не существует в текущем контексте "

Я пытался переместить wplayer.controls.stop() чуть ниже play(), и это работает. Но как остановить музыку с помощью кнопки?

Вот код на pastebin:

https://pastebin.com/v9wDn5mJ

1 Ответ

0 голосов
/ 21 января 2019

Вы должны создать экземпляр объекта вне функции, чтобы он был доступен для экземпляра класса.

Возможно, вы захотите взглянуть на шаблон mvvm.Это очень полезно при написании WPF и некоторых других приложений.

public partial class Form1 : Form
{
    WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Shown(object sender, EventArgs e)
    {
        // play an intro sound when a form is shown    
        wplayer.URL = "intro.mp3";
        wplayer.controls.play();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        wplayer.controls.stop();
    }
}
...