Как остановить воспроизведение mp3 при нажатии кнопки?
Я просто "перешел" с 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:
1 ответ
Решение
Вы должны создать экземпляр объекта вне функции, чтобы он был доступен для экземпляра класса.
Возможно, вы также захотите взглянуть на шаблон 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();
}
}