C#:WinForm窗体项目实现音频文件按指定时间播放 详细实现(无需数据库支持)

C#:WinForm窗体项目实现音频文件按指定时间播放 详细实现(无需数据库支持)

该项目实现的功能如下:
1.播放mp3文件;
2.播放mp4文件;
3.定时播放mp3或mp4文件。

先来看运行效果:
操作面板:

1
操作演示:
(这个水印去不掉了因为我是穷苦的免费用户。还有,若输入的时间是15:28默认应该播放的时间是当天15:28:00,超过这个时间则失效)
在这里插入图片描述

实现过程:
1.添加控件Windows Media Player

该控件如下图所示:
在这里插入图片描述
在visual Studio的上方菜单栏的视图->工具箱->任意一个控件右键->选择项->COM组件->勾选Windows Media Player选项
如下图所示
在这里插入图片描述
添加成功了后,就可以在工具箱里看到该控件。如下
在这里插入图片描述
将该控件拖入设计窗口即可。

2.添加控件 button 并编写按键行为

控件如下图所示:
在这里插入图片描述
按钮控件button1(外观:直接播放MP3)
该控件实现打开文件对话框,选择MP3文件进行播放。具体代码如下:

        private void button1_Click(object sender, EventArgs e)
        {
            FileDialog open = new OpenFileDialog();
            this.axWindowsMediaPlayer1.settings.playCount = 1;//播放次数
            open.Filter = "*.mp3|*.mp3";
            open.Title = "打开文件";
            if (open.ShowDialog() == DialogResult.OK)//打开对话框
            {
                axWindowsMediaPlayer1.URL = open.FileName;
                axWindowsMediaPlayer1.Ctlcontrols.play();//播放文件
            }
        }

按钮控件button2(外观:直接播放MP4)

            FileDialog open = new OpenFileDialog();
            //wxWindowsMediaplayer1是控件名
            this.axWindowsMediaPlayer1.settings.playCount = 1;//播放次数
            open.Filter = "*.mp4|*.mp4"; //文件格式
            open.Title = "打开文件";
            if (open.ShowDialog() == DialogResult.OK)//打开对话框
            {
                axWindowsMediaPlayer1.URL = open.FileName;
                axWindowsMediaPlayer1.Ctlcontrols.play();//播放文件
            }
3.添加控件dataGridView

该控件实现记录用户自行添加的播放列表
控件如下图所示
在这里插入图片描述
将控件拖入设计窗口,右键控件选择编辑列->添加,如下图所示
在这里插入图片描述
点击该控件跳转倒代码部分,添加代码:

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            dataGridView1.BackgroundColor = Color.White;//背景颜色
            this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
        }
4.添加控件button(外观:选择文件)及控件textBox(只读)

这两个控件实现打开文件及显示文件位置。
将button控件和textBox控件拖入设计框中。
控件如下图所示:
在这里插入图片描述
button控件(外观选择文件代码)

        private void button4_Click(object sender, EventArgs e)//opn file
        {
                    FileDialog open = new OpenFileDialog();
            axWindowsMediaPlayer1.settings.playCount = 1;//播放次数;
            open.Filter = "*.mp3|*.mp3";
            open.Title = "打开文件";
            if (open.ShowDialog() == DialogResult.OK)//打开对话框
            {
                filename = open.FileName;
                textBox1.Text = filename;
            }
        }

textBox控件右键属性->将ReadOnly属性设置为True

在这里插入图片描述

5.添加控件label和控件textBox

这两个控件实现注释和允许用户输入设定播放时间的功能。
控件如下图所示:
在这里插入图片描述
将label控件拖入设计窗口,并在属性中将外观改成播放时间,即可。
其后的textBox控件也是拖入即可。

6.添加控件button(外观:添加)及控件button(外观:删除)

实现将步骤4和步骤五的内容添加到步骤3的表中以及从dataGridView中删除数据。
控件如下图所示:
在这里插入图片描述
button(外观:添加)的代码

        private void button3_Click(object sender, EventArgs e)
        {
            if (filename == null || textBox2.Text == null)//检查输入
                MessageBox.Show("选择文件与播放时间均不能为空!");
            else
            {
                try
                {
                    DateTime.Parse(textBox2.Text);
                    //MessageBox.Show(DateTime.Parse(textBox2.Text).ToString());
                    DataGridViewRow row = new DataGridViewRow();
                    int index = dataGridView1.Rows.Add(row);
                    dataGridView1.Rows[index].Cells[0].Value = index + 1;//将信息记录到dataGridView的第index行开始的第1个单元格中
                    dataGridView1.Rows[index].Cells[1].Value = filename;
                    dataGridView1.Rows[index].Cells[2].Value = textBox2.Text;
                }
                catch (FormatException ex)//异常捕获
                {
                    MessageBox.Show("不是正确的时间格式。例如:八点三十分应该写成:8:30或8:30:00或08:30:00");
                }
               
            }
        }

button(外观:删除)的行为代码:

        private void button5_Click(object sender, EventArgs e)//deldete row删除选中行
        {
            if (this.dataGridView1.SelectedRows.Count > 0)
            {
                dataGridView1.Rows.Remove(dataGridView1.SelectedRows[0]);
            }
        }
7.添加控件button(外观:开始执行)

该控件将播放dataGridView中的待执行记录。
该控件如下图所示:
在这里插入图片描述
控件代码:

        private void button6_Click(object sender, EventArgs e)//开始执行按钮
        {
            int number = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Visible);
            MessageBox.Show("开始执行"+(number-1).ToString()+"条记录。");
            playlist = new string[number+1, 2];
            for (int i=0; i < number; i++)
            {
                if (dataGridView1.Rows[i].Cells[1].Value != null && dataGridView1.Rows[i].Cells[2].Value != null)
                {
                    playlist[i,0]=dataGridView1.Rows[i].Cells[1].Value.ToString();//存放文件路径
                    playlist[i,1] = dataGridView1.Rows[i].Cells[2].Value.ToString();//存放播放时间                
                }
            }
        }
8.添加时间控件timer

该控件控制刷新列表的执行状态。
从工具箱中将timer控件拖入设计窗口中。
如下图所示:
在这里插入图片描述
双击它跳转到代码编写处。
添加行为代码:

        private void timer1_Tick(object sender, EventArgs e)//定时播放
        {
            this.label1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            //this.label1.Text = DateTime.Now.ToString("T");
            TimeSpan ts;//时间间隔
            j= dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Visible);
            if (playlist != null)
            {
                for (int i = 0; i < j; i++)
                {
                    if (playlist[i, 1]!=null)//为了保证运行不中断,此步检查非常必要!
                    { 
            		ts = DateTime.Parse(playlist[i, 1]) - DateTime.Now;
            		if (-1 < ts.TotalSeconds && ts.TotalSeconds < 0)//若达到条件则播放文件
            		{
	             		axWindowsMediaPlayer1.URL = playlist[i, 0];
                     		axWindowsMediaPlayer1.Ctlcontrols.play();//播放文件  
                     		dataGridView1.Rows[i].Cells[3].Value = "已播放";
                	}
             		if ( ts.TotalSeconds < -10)
                     	    if (dataGridView1.Rows[i].Cells[3].Value == null)
                     		dataGridView1.Rows[i].Cells[3].Value = "时间失效";
            	    }
            	}
            }
        }       
9.给窗口添加自定义的lcon

选中窗口属性->窗口样式->Icon->选者准备好的*.ico文件。
在这里插入图片描述
效果如运行窗口左上所示。

整个项目的实现不依赖数据库。

工程源码资源已上传,可自行下载。

以上。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值