Postupy: Opakované přehrávání zvuku ve Windows Formuláři
Následující příklad kódu přehrává zvuk opakovaně. Když se kód v obslužné rutině události stopPlayingButton_Click
spustí, zastaví se veškerý zvuk, který se právě přehrává. Pokud se žádný zvuk nepřehrává, nic se nestane.
Příklad
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
Kompilace kódu
Tento příklad vyžaduje:
Odkazy na sestavení System a System.Windows.Forms.
Nahradíte název souboru
"c:\Windows\Media\chimes.wav"
platným názvem souboru.
Robustní programování
Operace se soubory by měly být uzavřeny do příslušných bloků zpracování výjimek.
Následující podmínky mohou způsobit výjimku:
Název cesty je nesprávně vytvořený. Obsahuje například znaky, které nejsou platné nebo jsou pouze prázdné znaky (ArgumentException třída).
Cesta je jen pro čtení (IOException třída).
Název cesty je
Nothing
( třídaArgumentNullException).Název cesty je příliš dlouhý (třídaPathTooLongException).
Cesta je neplatná (DirectoryNotFoundException třída).
Cesta je pouze dvojtečka ":" (NotSupportedException třída).
Zabezpečení rozhraní .NET Framework
Nerozhodujte o obsahu souboru na základě názvu souboru. Soubor Form1.vb například nemusí být zdrojovým souborem jazyka Visual Basic. Před použitím dat v aplikaci ověřte všechny vstupy.
Viz také
.NET Desktop feedback