问题描述
如何在计时器中播放声音?还是有其他方法可以做到这一点?我想每20分钟播放一次简短的声音。 我的代码可以正常显示计时器中的消息框,也可以使用按钮播放声音。但是不能在计时器中播放声音。
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.Runtime.InteropServices;
using System.Media;
namespace Eye
{
public partial class Form1 : Form
{
System.Media.soundplayer player = new System.Media.soundplayer(@"C:\Users\user\Desktop\Sounds\sound.wav");
public int makroButon;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender,EventArgs e)
{
timer1.Interval = 6000;
}
private void radioButton1_Checked(object sender,EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender,EventArgs e)
{
player.Play();
}
}
}
解决方法
我手动创建了Form1_Load。因此timer1.Interval = 6000;
行不起作用。大概100毫秒不足以播放声音。要创建form1_load函数,请不要手动键入它,只需在设计页面中单击double到空白处即可。并且它将被命名为“ Form1_Load_1” ,而不是“ Form1_Load” 。
所以我认为您的主要问题是单选按钮不是用于查找支票的正确控件。我使用了一个复选框,它似乎可以工作。我还用代码显式地设置了计时器,并将事件处理程序设置为tick。
SoundPlayer player;
private Timer timer1;
public int makroButon;
public Form1()
{
InitializeComponent();
player = new System.Media.SoundPlayer(@"C:\path\sound.wav");
timer1 = new Timer();
timer1.Tick += Timer1_Tick;
}
private void Form1_Load(object sender,EventArgs e)
{
timer1.Interval = 6000;
}
private void Timer1_Tick(object sender,EventArgs e)
{
player.Play();
}
private void CheckBox1_CheckedChanged(object sender,EventArgs e)
{
if(sender is CheckBox cb)
{
if (cb.Checked)
{
timer1.Start();
}
else
{
timer1.Stop();
}
}
}