问题描述
在filedrop中选择歌曲后,播放器冻结一段时间然后推迟 重新选择歌曲时,播放器的行为相同 延迟时间约为 10 秒,之后播放器再次正常工作。 当播放器开始播放音乐时,问题与文件丢失或按钮 3 相关
代码:
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using WMPLib;
namespace Music_Player
{
public partial class Form1 : Form
{
private WMPLib.WindowsMediaPlayer Player;
private Image pauseImage;
private Image playImage;
private bool isPlaying;
public Form1()
{
InitializeComponent();
button3.ImageAlign = ContentAlignment.MiddleCenter;
}
private void Form1_Load(object sender,EventArgs e)
{
Player = new WMPLib.WindowsMediaPlayer();
Player.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
Player.MediaError += new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
string startPath = Application.StartupPath;
pauseImage = Image.FromFile(Path.Combine(startPath,"pause.png"));
playImage = Image.FromFile(Path.Combine(startPath,"play.png"));
button3.Image = playImage;
}
private void Player_PlayStateChange(int newState)
{
isPlaying = (WMPLib.WMPPlayState)newState == WMPLib.WMPPlayState.wmppsPlaying;
if (isPlaying)
button3.Image = pauseImage;
else
button3.Image = playImage;
}
private void Player_MediaError(object pMediaObject)
{
MessageBox.Show($"Cannot play media file {Player.URL}.");
}
private void button3_Click(object sender,EventArgs e)
{
if (isPlaying)
{
hScrollBar1.Enabled = true;
timer1.Enabled = true;
timer1.Interval = 1000;
Player.controls.pause();
}
else
{
hScrollBar1.Enabled = true;
timer1.Enabled = true;
timer1.Interval = 1000;
Player.controls.play();
}
}
private void button5_Click(object sender,EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
if (isPlaying)
Player.controls.pause();
label5.Text = openFileDialog1.SafeFileName;
Player.URL = openFileDialog1.FileName;
}
}
private void timer1_Tick(object sender,EventArgs e)
{
hScrollBar1.Maximum = Convert.ToInt32(Player.currentMedia.duration);
hScrollBar1.Value = Convert.ToInt32(Player.controls.currentPosition);
if (Player != null)
{
int s = (int)Player.currentMedia.duration;
int h = s / 3600;
int m = (s - (h * 3600)) / 60;
s = s - (h * 3600 + m * 60);
label3.Text = String.Format("{0:D}:{1:D2}:{2:D2}",h,m,s);
s = (int)Player.controls.currentPosition;
h = s / 3600;
m = (s - (h * 3600)) / 60;
s = s - (h * 3600 + m * 60);
label2.Text = String.Format("{0:D}:{1:D2}:{2:D2}",s);
}
else
{
label3.Text = "0:00:00";
label2.Text = "0:00:00";
}
}
private void hScrollBar1_Scroll(object sender,ScrollEventArgs e)
{
Player.controls.currentPosition = hScrollBar1.Value;
}
private void trackBar1_Scroll(object sender,EventArgs e)
{
if (trackBar1.Value == 10)
Player.settings.volume = 100;
if (trackBar1.Value == 9)
Player.settings.volume = 90;
if (trackBar1.Value == 8)
Player.settings.volume = 80;
if (trackBar1.Value == 7)
Player.settings.volume = 70;
if (trackBar1.Value == 6)
Player.settings.volume = 60;
if (trackBar1.Value == 5)
Player.settings.volume = 50;
if (trackBar1.Value == 4)
Player.settings.volume = 40;
if (trackBar1.Value == 3)
Player.settings.volume = 30;
if (trackBar1.Value == 2)
Player.settings.volume = 20;
if (trackBar1.Value == 1)
Player.settings.volume = 10;
if (trackBar1.Value == 0)
Player.settings.volume = 0;
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)