📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//这里添加对DirectShow接口的引用
using QuartzTypeLib;
using System.Data.SqlClient;
namespace Stream
{
public partial class Form1 : Form
{
//这里对要使用的变量进行声明
public OpenFileDialog openFileDialog;
public IVideoWindow myVideoWindow;
public IMediaEvent myMediaEvent;
public IMediaEvent myMediaEventEx;
public IMediaPosition myMediaPosition;
public IMediaControl myMediaControl;
public IBasicAudio myBasicAudio;
//数据库连接字符串
private string connStr = System.Configuration.ConfigurationSettings.AppSettings["connect"];
//初始化媒体文件的播放状态
public string state = "";
//该变量用来保存媒体文件的路径
public string path;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
////获得收藏夹列表
//DataSet mediaInfo = getInfo();
////将数据源与dataset数据集绑定
//dgMedia.DataSource = mediaInfo.Tables["musicInfo"];
//停止播放按钮不可用
stopBtn.Enabled = false;
//定时器开始计时
timer1.Start();
}
//此处为定时器定时触发事件
private void timer1_Tick(object sender, EventArgs e)
{
//如果播放状态为播放
if (state == "Play")
{
//更新状态栏
UpdateStatusBar();
}
//若媒体文件没有播放则不更新状态栏
else
{
return;
}
}
//更新播放状态栏函数
private void UpdateStatusBar()
{
//查看状态变量
switch (state)
{
//如果状态变量为停止 状态栏显示停止状态信息
case "Stop": mediaState.Text = "Stopped"; break;
//如果状态变量为暂停 状态栏显示暂停状态信息
case "Pause": mediaState.Text = "Paused "; break;
//如果状态变量为播放 状态栏显示播放状态信息
case "Play": mediaState.Text = "Play"; break;
//如果状态为空 则不显示信息
case "": mediaState.Text = "Stopped"; break;
}
//如果状态不为空 获得播放时间信息
if (state != "")
{
//获得总的播放时间
int sec = (int)myMediaPosition.Duration;
//获得小时信息
int hour = sec / 3600;
//获得分钟信息
int min = (sec - (hour * 3600)) / 60;
//获得秒信息
sec = sec - (hour * 3600 + min * 60);
//将播放时间信息显示在状态栏中
timeState.Text = String.Format("{0:D2}:{1:D2}:{2:D2}", hour, min, sec);
//获得当前的播放时间
sec = (int)myMediaPosition.CurrentPosition;
//获得小时信息
hour = sec / 3600;
//获得分钟信息
min = (sec - (hour * 3600)) / 60;
//获得秒信息
sec = sec - (hour * 3600 + min * 60);
//把当前时间信息显示在状态栏中
timeState1.Text = String.Format("{0:D2}:{1:D2}:{2:D2}", hour, min, sec);
}
else
{
//初始化播放时间
timeState.Text = "00:00:00";
//初始化当前时间
timeState1.Text = "00:00:00";
}
}
//窗口关闭时释放DirectShow资源
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
//释放DirectShow资源
myVideoWindow = null;
myMediaEvent = null;
myMediaEventEx = null;
myMediaPosition = null;
myMediaControl = null;
myBasicAudio = null;
}
//删除收藏夹数据
private void delBtn_Click(object sender, EventArgs e)
{
//初始化变量
int index_t;
string media_t = "";
try
{
//获得欲删除记录的索引
index_t = dgMedia.SelectedRows[0].Index;
//获得删除记录的字段
media_t = dgMedia.Rows[index_t].Cells["MeidaInfo"].Value.ToString();
}
//如果没有获得相应数据
catch (Exception exp)
{
//显示错误信息
MessageBox.Show("Delete Error!");
//返回
return;
}
//删除记录
delMeidaInfo(media_t);
//提示消息删除成功
MessageBox.Show("删除成功!");
//更新收藏夹数据
DataSet mediaInfo = getInfo();
dgMedia.DataSource = mediaInfo.Tables["musicInfo"];
}
//增加收藏夹信息
public void addMediaInfo(string name, string path)
{
//连接数据库
SqlConnection conn = new SqlConnection(connStr);
SqlCommand SqlCmd = conn.CreateCommand();
//使用pd_addInfo存储过程
SqlCmd.CommandType = CommandType.StoredProcedure;
SqlCmd.CommandText = "pd_addInfo";
//传入参数
SqlParameter parInput1 = SqlCmd.Parameters.Add("@Name", SqlDbType.Char);
parInput1.Direction = ParameterDirection.Input;
parInput1.Value = name;
SqlParameter parInput2 = SqlCmd.Parameters.Add("@Path", SqlDbType.VarChar);
parInput2.Direction = ParameterDirection.Input;
parInput2.Value = path;
//打开数据库连接
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
try
{
//执行插入媒体信息命令
SqlCmd.ExecuteNonQuery();
}
finally
{
//关闭数据库
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
//删除数据库数据
public void delMeidaInfo(string name)
{
//连接数据库
SqlConnection conn = new SqlConnection(connStr);
SqlCommand SqlCmd = conn.CreateCommand();
//使用pd_delInfo存储过程
SqlCmd.CommandType = CommandType.StoredProcedure;
SqlCmd.CommandText = "pd_delInfo";
//传入参数
SqlParameter parInput1 = SqlCmd.Parameters.Add("@Name", SqlDbType.Char);
parInput1.Direction = ParameterDirection.Input;
parInput1.Value = name;
//打开数据库连接
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
//执行插入新贴命令
SqlCmd.ExecuteNonQuery();
//关闭数据库
if (conn.State == ConnectionState.Open)
conn.Close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -