Procedura: Riprodurre un suono in un Windows Form
L'esempio di codice seguente riproduce ripetutamente un suono. Quando viene eseguito il codice nel gestore eventi stopPlayingButton_Click
, qualsiasi suono attualmente riprodotto si arresta. Se non viene riprodotto alcun suono, non succede nulla.
Esempio
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Media;
using System.Windows.Forms;
namespace SoundPlayerPlayLoopingExample
{
public class Form1 : Form
{
private SoundPlayer Player = new SoundPlayer();
public Form1()
{
InitializeComponent();
}
private void playLoopingButton_Click(object sender, EventArgs e)
{
try
{
// Note: You may need to change the location specified based on
// the sounds loaded on your computer.
this.Player.SoundLocation = @"C:\Windows\Media\chimes.wav";
this.Player.PlayLooping();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error playing sound");
}
}
private void stopPlayingButton_Click(object sender, EventArgs e)
{
this.Player.Stop();
}
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.playLoopingButton = new System.Windows.Forms.Button();
this.stopPlayingButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// playLoopingButton
//
this.playLoopingButton.Location = new System.Drawing.Point(12, 12);
this.playLoopingButton.Name = "playLoopingButton";
this.playLoopingButton.Size = new System.Drawing.Size(87, 23);
this.playLoopingButton.TabIndex = 0;
this.playLoopingButton.Text = "Play Looping";
this.playLoopingButton.UseVisualStyleBackColor = true;
this.playLoopingButton.Click += new System.EventHandler(this.playLoopingButton_Click);
//
// stopPlayingButton
//
this.stopPlayingButton.Location = new System.Drawing.Point(105, 12);
this.stopPlayingButton.Name = "stopPlayingButton";
this.stopPlayingButton.Size = new System.Drawing.Size(75, 23);
this.stopPlayingButton.TabIndex = 1;
this.stopPlayingButton.Text = "Stop";
this.stopPlayingButton.UseVisualStyleBackColor = true;
this.stopPlayingButton.Click += new System.EventHandler(this.stopPlayingButton_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(195, 51);
this.Controls.Add(this.stopPlayingButton);
this.Controls.Add(this.playLoopingButton);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button playLoopingButton;
private System.Windows.Forms.Button stopPlayingButton;
}
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
}
Imports System.Media
Imports System.Windows.Forms
Public Class Form1
Inherits System.Windows.Forms.Form
Private Player As New SoundPlayer
Sub New()
Me.InitializeComponent()
End Sub
Private Sub playLoopingButton_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles playLoopingButton.Click
Try
' Note: You may need to change the location specified based on
' the sounds loaded on your computer.
Me.Player.SoundLocation = "C:\Windows\Media\chimes.wav"
Me.Player.PlayLooping()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error playing sound")
End Try
End Sub
Private Sub stopPlayingButton_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles stopPlayingButton.Click
Me.Player.Stop()
End Sub
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
Friend WithEvents playLoopingButton As System.Windows.Forms.Button
Friend WithEvents stopPlayingButton As System.Windows.Forms.Button
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.playLoopingButton = New System.Windows.Forms.Button
Me.stopPlayingButton = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'playLoopingButton
'
Me.playLoopingButton.Location = New System.Drawing.Point(12, 12)
Me.playLoopingButton.Name = "playLoopingButton"
Me.playLoopingButton.Size = New System.Drawing.Size(89, 23)
Me.playLoopingButton.TabIndex = 0
Me.playLoopingButton.Text = "Play Looping"
Me.playLoopingButton.UseVisualStyleBackColor = True
'
'stopPlayingButton
'
Me.stopPlayingButton.Location = New System.Drawing.Point(107, 12)
Me.stopPlayingButton.Name = "stopPlayingButton"
Me.stopPlayingButton.Size = New System.Drawing.Size(75, 23)
Me.stopPlayingButton.TabIndex = 1
Me.stopPlayingButton.Text = "Stop"
Me.stopPlayingButton.UseVisualStyleBackColor = True
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(197, 52)
Me.Controls.Add(Me.stopPlayingButton)
Me.Controls.Add(Me.playLoopingButton)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
<STAThread()> _
Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
End Class
Compilazione del codice
Questo esempio richiede:
Riferimenti agli assembly System e System.Windows.Forms.
Assicurarsi di sostituire il nome file
"c:\Windows\Media\chimes.wav"
con un nome di file valido.
Programmazione affidabile
Le operazioni sui file devono essere racchiuse all'interno di blocchi di gestione delle eccezioni appropriati.
Le condizioni seguenti possono causare un'eccezione:
Il nome del percorso è malformato. Ad esempio, contiene caratteri non validi o solo spazi vuoti (ArgumentException classe).
Il percorso è di sola lettura ( classeIOException).
Il nome del percorso è
Nothing
( classeArgumentNullException).Il nome del percorso è troppo lungo ( classePathTooLongException).
Il percorso non è valido ( classeDirectoryNotFoundException).
Il percorso è solo un punto ":" (NotSupportedException classe).
Sicurezza di .NET Framework
Non prendere decisioni sul contenuto del file in base al nome del file. Ad esempio, il file Form1.vb potrebbe non essere un file di origine di Visual Basic. Verificare tutti gli input prima di usare i dati nell'applicazione.
Vedere anche
- PlayLooping
- Procedura: Suonare un suono da un modulo di Windows Form
- Panoramica della classe SoundPlayer
.NET Desktop feedback