Reputation: 851
I have do a small 2d game in C#. I want to add sound. After watching a video in YouTube I have typed the following code but it is not running:
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;
using System.Media;
namespace Test_Sound
{
public partial class Form1 : Form
{
private SoundPlayer sound;
public Form1()
{
sound = new SoundPlayer("3G.wav");
InitializeComponent();
}
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
if(checkBox.Checked)
{
checkBox.Text = "Stop";
sound.Play();
}
else
{
checkBox.Text = "Play";
sound.Stop();
}
}
}
}
Visual Studio is showing the following error:
line :27 Error 1 'System.Windows.Forms.CheckBox' does not contain a definition for 'Play' and no extension method 'Play' accepting a first argument of type 'System.Windows.Forms.CheckBox' could be found (are you missing a using directive or an assembly reference?) c:\users\hp\documents\visual studio 2013\Projects\Test_Sound\Form1.cs
line 32: Error 2 'System.Windows.Forms.CheckBox' does not contain a definition for 'Stop' and no extension method 'Stop' accepting a first argument of type 'System.Windows.Forms.CheckBox' could be found (are you missing a using directive or an assembly reference?) c:\users\hp\documents\visual studio 2013\Projects\Test_Sound\Form1.cs
Can any one help me fix my error?
The Video link is Play Sounds in Windows Forms App (C# .NET)
I have fixed that error. But now i have got exception. Visual Basic showing the following exception message at line number 27. The exception message has given below:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.dll
Additional information: Sound API only supports playing PCM wave files. I have downloaded a PCM wave file from internet and replaced the existing file by it. But it is not working.
Upvotes: 0
Views: 1486
Reputation: 2022
Play()
and Stop()
are sound
's methods that you declared before Form1()
initialization.
Your code must be:
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
if(checkBox.Checked)
{
checkBox.Text = "Stop";
sound.Play();
}
else
{
checkBox.Text = "Play";
sound.Stop();
}
}
See:
- http://www.dotnetperls.com/soundplayer
- https://msdn.microsoft.com/en-us/library/System.Media.SoundPlayer_methods(v=vs.110).aspx
About your new Exception, PCM (Pulse Code Modulation - https://en.wikipedia.org/wiki/Pulse-code_modulation) is the only one supported by the System.Media.SoundPlayer class. It's the most common WAV format, so most .WAV files just work.
There are a few tools that can convert audio files. For example, Switch Audio (http://www.nch.com.au/switch/) can convert between formats (even in the free version). You'll need to get your file into a standard, PCM encoded WAV file.
Upvotes: 1