Porady: odtwarzanie dźwięku w pętli w formularzu systemu Windows
Poniższy przykład kodu odtwarza dźwięk wielokrotnie. Po uruchomieniu kodu w procedurze obsługi zdarzeń stopPlayingButton_Click
każdy dźwięk aktualnie odtwarzany zostanie zatrzymany. Jeśli żaden dźwięk nie jest odtwarzany, nic się nie dzieje.
Przykład
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
Kompilowanie kodu
Ten przykład wymaga:
Odwołania do zestawów System i System.Windows.Forms.
Zastąp nazwę
"c:\Windows\Media\chimes.wav"
pliku prawidłową nazwą pliku.
Niezawodne programowanie
Operacje na plikach powinny być ujęte w odpowiednie bloki obsługi wyjątków.
Następujące warunki mogą spowodować wyjątek:
Nazwa ścieżki jest źle sformułowana. Na przykład zawiera on nieprawidłowe znaki lub jest tylko biały znak (ArgumentException klasa).
Ścieżka jest tylko do odczytu (IOException klasa).
Nazwa ścieżki to
Nothing
(ArgumentNullException klasa).Nazwa ścieżki jest za długa (PathTooLongException klasa).
Ścieżka jest nieprawidłowa (DirectoryNotFoundException klasa).
Ścieżka jest tylko dwukropkiem ":" (NotSupportedException klasa).
Zabezpieczenia.NET Framework
Nie należy podejmować decyzji dotyczących zawartości pliku na podstawie rozszerzenia nazwy pliku. Na przykład plik Form1.vb może nie być plikiem źródłowym języka Visual Basic. Sprawdź wszystkie dane wejściowe, zanim użyjesz danych w aplikacji.
Zobacz też
.NET Desktop feedback