共用方式為


HOW TO:在 Windows Form 上循環播放音效

更新:2007 年 11 月

下列程式碼範例會重複播放音效。當執行 stopPlayingButton_Click 事件處理常式中的程式碼時,會停止目前播放的任何音效。如果本來就沒有播放音效,則不會進行任何作業。

範例

Imports System
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
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());
        }
    }
}

編譯程式碼

這項範例需要:

  • System 和 System.Windows.Forms 組件的參考。

  • 您將檔案名稱 "c:\Windows\Media\chimes.wav" 取代為有效的檔案名稱。

如需從 Visual Basic 或 Visual C# 的命令列建置這個範例的詳細資訊,請參閱從命令列建置 (Visual Basic)使用 csc.exe 建置命令列。您也可以透過將程式碼貼入新的專案,在 Visual Studio 中建置此範例。

穩固程式設計

檔案作業應放在適當的例外處理區塊內。

下列情形可能會導致例外狀況:

安全性

不要根據檔案名稱來判斷檔案內容。例如,檔案 Form1.vb 可能不是 Visual Basic 原始程式檔。在應用程式中使用這些資料之前,請先驗證所有輸入值。

請參閱

工作

HOW TO:播放 Windows Form 中的音效

參考

PlayLooping

SoundPlayer 類別概觀